如何在父类的子类里调用构造函数
1个回答
展开全部
比如在基类里面调用一个虚函数,那么你在构造一个派生类对象的时候在基类调用的这个虚函数不是派生类里面的版本,而是基类里面的版本。
C/C++ code?
struct Base{
Base(){ fun();}
virtual void fun(){cout<<"Base version"<<endl;}
};
struct Drived:public Base {
Drived(){}
virtual void fun(){cout<<"Drived version"<<endl;}
};
int main()
{
Drived obj;
system("pause");
return 0;
}
当父类构造的时候,子类还没有出生,所以调用子类版本的虚函数也就无意义了
不要在构造函数和析构函数中调用虚函数。
因为基类构造函数在子类之前执行,当基类的构造函数执行时,子类的数据成员没有被初始化。
如果虚函数在基类构造的时候调用,而进入到子类中的时候,子类的函数需要访问到本地数据,但是这些数据成员还没有被初始化,调用一个没有被初始化的东东是很危险滴。
C/C++ code?
struct Base{
Base(){ fun();}
virtual void fun(){cout<<"Base version"<<endl;}
};
struct Drived:public Base {
Drived(){}
virtual void fun(){cout<<"Drived version"<<endl;}
};
int main()
{
Drived obj;
system("pause");
return 0;
}
当父类构造的时候,子类还没有出生,所以调用子类版本的虚函数也就无意义了
不要在构造函数和析构函数中调用虚函数。
因为基类构造函数在子类之前执行,当基类的构造函数执行时,子类的数据成员没有被初始化。
如果虚函数在基类构造的时候调用,而进入到子类中的时候,子类的函数需要访问到本地数据,但是这些数据成员还没有被初始化,调用一个没有被初始化的东东是很危险滴。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询