A a(1);输出1,这个没什么解释的,主要是看为什么B b(2,3);会输出203。
B(int i,int j):A(i)这一句用i初始化基类A,输出2;
B的数据成员a没有显式初始化,用默认的A(int i=0)初始化a,输出0;
cout< 改成一个能看的格式。#include
using namespace std;
class A
{
private:
int x;
public:
A(int i=0):x(i)
{
cout< }
};
class B: public A
{
private:
A a;
public:
B(int i,int j):A(i)
{
cout<
};
int main()
{
A a(1);
B b(2,3);
return 0;
}
A a(1)输出1
B b(2,3)执行B的构造函数
第一步执行public B(int i ,int j):A(i)中的A(i)(先执行父类的构造函数)输出2
再生成B的成员变量private: A a;输出0
再执行cout<所以得到1203
怎么可以有两个参数一样的构造函数A(int),会报错的吧