为什么基类的默认构造函数总是执行?
class Animal{protected: int data[2];public: Animal() { data[0]=0; data[1]=0; } Animal(int a,int b) { data[0]=a; data[1]=b; }};class Cow:public Animal{public: Cow(int a) { Animal(5,6); } void getPrint() { cout<<data[0]<<" "<<data[1]<<endl; }};int _tmain(int argc, _TCHAR* argv[]){ Cow* c=new Cow(2); c->getPrint(); return 0;}
...Cow(int a) : Animal(5, 6){}...
[解决办法]
1.
class Cow:public Animal{public: Cow(int a) { Animal(5,6); //这里构造生成一个无名对象,并没有初始化自身。 } void getPrint() { cout<<data[0]<<" "<<data[1]<<endl; }};