C++ 在初始值设定项列表中调用基类构造函数
我编写以下代码:C++ 在初始值设定项列表中调用基类构造函数,c++,list,constructor,base-class,initializer,C++,List,Constructor,Base Class,Initializer,我编写以下代码: class A { protected: int age; public: A(int a); }; A::A(int a){ cout << "constructer A" << a << endl; age =a; } class B : public A{ int id; public: B(int i,int a); }; B::B(int i, int a):A::A(a) {
class A {
protected:
int age;
public:
A(int a);
};
A::A(int a){
cout << "constructer A" << a << endl;
age =a;
}
class B : public A{
int id;
public:
B(int i,int a);
};
B::B(int i, int a):A::A(a)
{
cout << "constructer B" << endl;
id = i;
}
及
?,
我知道这两个主题都能很好地工作,但我的问题是有什么不同我很困惑,编译器在初始值设定项列表中允许
A::A(A)
,但不允许B=B::B(10,20)代码>来构造一个对象(用g++4.7.3测试)。也许会有一些启发。
B::B(int i, int a):A::A(a)
B::B(int i, int a):A(a)