Конструкторы копирования в C ++

У меня есть эти классы:

первый:

 class C 
 {
     public:
     C(const C& c):_s(c._s){}
     c():_s(""){}

     string _s;
 }

второй:

class C2: public C
{
    public:
    C2(const C2 & c2):_i(c2.i){}
    C2():_i(0){}

    int _i;
}

main:

int main()
{
    C2 c2;
    C2._s="hello";
    c2._i=42;
    C2 c3(c2);
    cout<<c3._s<<" "<<c3._i<<endl;
}

, а результат - 42. Мой вопрос: почему на выходе 42? Базовый конструктор всегда вызывается перед производными конструкторами, поэтому эта строка:

C2 c3(c2);

должна вызывать конструктор копирования C и копировать «hello», то есть вывод должен быть hello. Что мне здесь не хватает?

0
задан Itzik984 10 February 2012 в 14:01
поделиться