#include <iostream>
using namespace std;
class A{
public:
A(){
cout<<"a";
}
A(int x){
cout<<"x";
}
};
class B: public A{
public:
B(A ){
cout<<"b";
}
};
int main()
{
B b(10);
return 0;
}
B的构造函数如何接受整数值?为什么为什么先调用A的参数化构造函数,然后再调用默认构造函数?
由于B
的构造函数需要一个A
对象,并且A
对象可以由整数构造,所以编译器将调用A(int)
构造要传递给B的构造函数的参数。这将导致输出“ x”。由于B的构造函数没有为A
基类提供初始化程序,因此将默认构造基类。这将输出“ a”。然后,B的构造函数的主体将执行,导致输出“ b”。