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)