c++ class A {private int x ;public A(int i =0):x(0) {} A(int i =0):x(i)

2025-02-27 12:01:29
推荐回答(3个)
回答1:

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;
}

回答2:

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

回答3:

怎么可以有两个参数一样的构造函数A(int),会报错的吧