VC++程序题目
#include<iostream.h>class A{
private:
public:
A(){cout<<"A"<<endl;}
};
class B:public A
{
public:
B(){cout<<"B"<<endl;}
};
void main(void)
{
A aa;
B bb;
}
运行结果是A A B请解释下,
答案:#include<iostream.h>
class A{
private:
public:
A(){cout<<"A"<<endl;}
};
class B:public A
{
public:
B(){cout<<"B"<<endl;}
};
void main(void)
{
A aa;//会调用A(){cout<<"A"<<endl;}
B bb;//会调用A(){cout<<"A"<<endl;}然后B(){cout<<"B"<<endl;} 他会先调用基类的构造函数
}执行main函数后
A aa;
B bb
第一句是创建类A在实例,此时调用A的构造函数输出A
第二句是创建类B在实例,类B继承A,所以在调用B在构造函数前先调用类A的构造函数,此时输出A,然后在调用B的构造函数输出B
只要记住若一个类是另一个类的子类的话,都是先调用父类胡构造函数,然后再调用自己的构造函数来晚一步,楼上正解记住,派生类构造对象的时候,会先调用基类的构造函数
上一个:VC++程序源代码?
下一个:VC++安装路径