У меня есть эти классы:Конструкторы копирования в 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;
}
основные:
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
конструктор копирования и должен копировать „привет“, имея в виду выход должен быть привет. Что я упускаю здесь?
Ваш код неправильный - вы смешиваете свои дела, а ваши подчеркивания также ошибаются. – Arafangion