У меня есть эти классы:
первый:
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. Что мне здесь не хватает?