派生类生成对象会引起基类生成对象么.
我们知道,当一个派生类创建一个对象时,会导致其基类的构造函数也被调用,而构造函数的调用则意味着生成了对象,这是否意思着生成一个派生类对象时必然生成一个基类对象呢?
也许有人会认为,调用基类构造函数只是为了使派生类得到从基类继承来的那些特性.但是下面这段代码证实了这种说法是不正确的:
class animal{
public:
void setlegs(int a)
{
this->legs=a; //特地使用this来说明问题
cout<<this->lens<<endl;
}
private:
int legs;
};
class monkey:public animal{
public:
void setlegs(int m,int n){ //求方便,作内联算了.
animal::setlegs(4);
arms=m;
legs=n;
cout<<arms<<" "<<legs<<endl;
}
private:
int arms,legs;
}
void main(){
monkey mky;
mky.setlegs(2,2);
}
得到的打印结果是:2
2,2.
由于在基类中指针this始终是指向基类对象的,如果没有生成基类的对象,则this->legs=a 无法实现,所以我仍然得出创建派生类对象必然导致生成一个基类对象.
如果我的结论正确,那有什么办法来用一个基类指针来获得这个基类对象呢?