вызвать конструктор базового класса в списке инициализаторов

я пишу следующий код:

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

есть ли разница между

B::B(int i, int a):A::A(a)

и

B::B(int i, int a):A(a)

?, я знаю, что обе темы работают хорошо, но мой вопрос в том, что отличается


person user3579712    schedule 28.04.2014    source источник
comment
Я озадачен тем, что компилятор разрешает A::A(a) в списке инициализаторов, но не позволяет B b = B::B(10, 20); создавать объект (проверено с помощью g++ 4.7.3).   -  person R Sahu    schedule 28.04.2014
comment
Возможно, этот вопрос прольет свет.   -  person chris    schedule 28.04.2014