纯虚函数和虚函数重写调用
class parent
{
public:
parent(int a, int b)
{
this->a = a;
this->b = b;
cout << "我是爸爸构造函数" << endl;
}
void printfP()
{
dotest();
}
virtual void dotest()
{
cout << "parent:dotest()" << endl;
}
~parent()
{
cout << "我是爸爸析构函数" << endl;
}
private:
int a;
int b;
};
class child :public parent
{
public:
child(int a, int b, int c) :parent(a, b)
{
this->c = c;
cout << "我是儿子构造函数" << endl;
}
~child()
{
cout << "我是儿子析构函数" << endl;
}
virtual void dotest()
{
cout << "child:dotest()" << endl;
}
private:
int c;
};
//在子类对象构造时,需要调用父类构造函数对其继承得来的成员进行初始化
//在系类对象析构时,需要调用父类析构函数对其继承得来的成员进行处理
//先调用父类构造函数 再调用子类构造函数
void objplay()
{
child c(1, 2, 3);
c.printfP();
}
void main()
{
objplay();
getchar();
}
基类的printfP函数此时调用的dotext 是子类重写的方法,其实每个函数里面隐藏一个this指针的,由于创建了子类child的实例,this就是子类的指针1,当谁调用了改该方法,传递的this就是该对象的,顾名思义 child c(1, 2, 3); c.printfP(); dotext 时调用的 是子类的方法