虚函数和纯虚函数
class Person
{
public:
Person()
{
cout<<"Person"<<endl;
}
virtual ~Person() //如果一个类确定被继承,基类的析构函数需要定
//义为虚函数,否则在析构时会出现只析构基类的
//s情况。
{
cout<<"~Person"<<endl;
}
virtual void getName() = 0; //Person类存在一个纯虚函数,因而不能实例化
virtual void getAge() //虚函数,只需要声明基类为虚函数,后续子
//类不管继承多少层,不加virtual,
//同样能够表现出多态性。
{
cout<<"Person-age"<<endl;
}
void getSex()
{
cout<<"Person-sex"<<endl;
}
};
class Student:public Person
{
public:
Student()
{
cout<<"Stuent"<<endl;
}
~Student()
{
cout<<"~Stuent"<<endl;
}
void getName()
{
cout<<"Stuent-name"<<endl;
}
void getAge()
{
cout<<"Stuent-age"<<endl;
}
void getSex()
{
cout<<"Stuent-sex"<<endl;
}
};
class CollegeStudent:public Student
{
public:
CollegeStudent()
{
cout<<"CollegeStudent"<<endl;
}
~CollegeStudent()
{
cout<<"~CollegeStudent"<<endl;
}
void getName()
{
cout<<"CollegeStudent-name"<<endl;
}
void getAge()
{
cout<<"CollegeStudent-age"<<endl;
}
void getSex()
{
cout<<"CollegeStudent-sex"<<endl;
}
};
int main()
{
/*
*构造函数顺序为Person->student->collegeStudent
*析构函数顺序为~collegeStudent->~student->~Person
*/
Person* collegeStudent = new CollegeStudent();
collegeStudent->getName();
collegeStudent->getAge();
collegeStudent->getSex();
delete collegeStudent;
return 0;
//输出结果为:(Mac平台输出)
//@"Person\r\n"
//@"Stuent\r\n"
//@"CollegeStudent\r\n"
//@"CollegeStudent-name\r\n"
//@"CollegeStudent-age\r\n"
//@"Person-sex\r\n"
//@"~CollegeStudent\r\n"
//@"~Stuent\r\n"
//@"~Person\r\n"
}
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 银河驿站
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果