Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > наследование: непонятное поведение


Автор: wowka19 16.8.2012, 16:51
код:
Код

class A
{
public:
    char s;
    A():s('A'){}
    void out(){cout << s;}
};

class B : public A
{
public:
    //char s;
    B(){s = 'B';}
};


int main()
{
    A * p_a = new B;
    p_a->out();
    return 0;
}


почему строка в классе B (та что закоментирована) влияет на работу программы?
с ней выводит "A",
без нее - "B".

Автор: Cheloveck 16.8.2012, 17:16
Потому что "с ней" ты пишешь значение в переменную класса B, а выводится значение из переменной класса A

Автор: mes 16.8.2012, 17:17
потому что два s: A::s  и B::s

Автор: wowka19 16.8.2012, 20:31
 а как с ней поменять значение s класса A?

Автор: mes 16.8.2012, 21:02
A::s ='B';

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)