Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
olimp_72
#1

Наследование классов - C++

01.09.2011, 14:07. Просмотров 767. Ответов 10
Метки нет (Все метки)

Здравствуйте.
Помогите пожалуйста решить проблему по наследованию классов.

Есть базовый класс
C++
1
2
3
4
5
6
7
8
class parent
{
                protected:
                                int x;
                public:
                                void Fill() { x = 5; }
                                void Show() { cout<<x<<endl;}                                                               
};
Класс-потомок
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class child : public parent
{
                public:
                                void Show_ () { cout<<x<<endl;}                                                                           
};
 
 parent parent1;
child child1;
int main()
{
                parent1.Fill();
parent1. Show();  // Выводит 5
child1. Show_();  // Выводит 0. Почему так?
return 0;
}
Спасибо.

 Комментарий модератора 
Используйте теги форматирования кода!
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2011, 14:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Наследование классов (C++):

Заменить наследование классов на наследование интерфейсов - C++
#include &lt;iostream&gt; #include &lt;assert.h&gt; using namespace std; int people_on_base = 100; int vehicles_on_base = 100; double...

Наследование классов. Копирование производных классов - C++
Здравствуйте всем, у меня такой вопрос: написал код #include &quot;stdafx.h&quot; class A //Создаем класс А { int mA; ...

Наследование классов - C++
Задание: Создать класс базовый класс «квадрат». Элементы класса (поля имеют статус доступа protected): поле, задающее длину...

Наследование классов - C++
Собирал программу по частям, подскажите как исправить ошибки. #include &lt;iostream&gt; #include &lt;conio.h&gt; class Vehicle //...

Наследование классов - C++
Здравствуйте! Вот написан мой код ниже. Я когда пытаюсь ввести &quot;What give animal:&quot; идёт прекращение работы. Не понимаю почему. Помогите...

наследование классов - C++
Здарова, народ! :D Вот сижу и пытаюсь сделать задание из книги по которой &quot;учимся программировать в универе&quot;, а там такой поворот...

10
Aneron
158 / 157 / 12
Регистрация: 20.04.2010
Сообщений: 570
01.09.2011, 14:22 #2
видимо вы плохо понимаете, что из себя представляет наследование.
у вас есть две переменные parent1 и child1. и они друг между другом ни как не связаны.
0
pincet
1252 / 824 / 91
Регистрация: 23.07.2010
Сообщений: 4,259
01.09.2011, 14:24 #3
А кто х для child1 будет инициализировать?
0
sandye51
программист С++
685 / 587 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
01.09.2011, 14:27 #4
pincet, переменная глобальная, поэтому все инициализируется значениями по умолчанию
Цитата Сообщение от olimp_72 Посмотреть сообщение
child1. Show_(); // Выводит 0. Почему так?
для int пол умолчанию значение - 0, оно и вывелось
0
pincet
1252 / 824 / 91
Регистрация: 23.07.2010
Сообщений: 4,259
01.09.2011, 14:34 #5
Цитата Сообщение от sandye51 Посмотреть сообщение
pincet, переменная глобальная, поэтому все инициализируется значениями по умолчанию
ТС больше волнует не почему 0, а почему не 5.
0
sandye51
программист С++
685 / 587 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
01.09.2011, 14:40 #6
не 5, потому что 0, а почему 0 - объянено
0
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
01.09.2011, 15:32 #7
Цитата Сообщение от sandye51 Посмотреть сообщение
переменная глобальная, поэтому все инициализируется значениями по умолчанию
Это верно для всех глобальных объектов, кроме классов, не являющихся POD-классами, для которых вызывается конструктор по умолчанию.
У автора классы имеют защищенное поле, поэтому они не являются POD-классами, поэтому при создании их глобальных объектов будет вызван конструктор по умолчанию, в данном случае созданный компилятором, т.е. пустой, следовательно данное-член x отсутствует в его списке инициализации, следовательно останется неинициализированным
1
sandye51
программист С++
685 / 587 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
01.09.2011, 15:43 #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class a
{
    int aa;
public:
    a()
    {
        aa = 1;
    }
};
 
class b
{
    a bb;
};
 
b bb;
 
int main()
{
    return 0;
}
здесь bb.aa = 1
0
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
01.09.2011, 15:50 #9
Цитата Сообщение от sandye51 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class a
{
 int aa;
public:
 a()
 {
 aa = 1;
 }
};
class b
{
 a bb;
};
b bb;
int main()
{
 return 0;
}
здесь bb.aa = 1
так что кури
Ежели вы мне оппонируете в такой форме, то пример некорректный, так как у вас
задан конструктор по умолчанию, а у автора - нет.
0
Lupus
23 / 23 / 1
Регистрация: 13.03.2011
Сообщений: 326
26.10.2011, 22:24 #10
Вопрос: можно ли наследоваться от объявленного класса, но еще не определенного (позже определенного)? И если да, то как?
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
26.10.2011, 22:28 #11
Lupus, Онли шаблонной магией полагаю

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Some;
 
template<class TBase>
class Derived:public TBase
{
};
 
class Some
{
};
 
int main()
{
   Derived<Some> der;
}
0
26.10.2011, 22:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2011, 22:28
Привет! Вот еще темы с ответами:

наследование классов - C++
Народ, всем приветик! Уже 3 день сижу над етой темой, не получается задание, вчера выбрасывал на форум исходник, но в конце концов сделал...

наследование классов - C++
Помогите пожалуйста разобраться с задачей Создайте базу данных деканата. В ней фиксируются данные о 2 категориях студентах: студенты...

Наследование классов - C++
Пусть автомобиль характеризуется установленным двигателем, трансмиссией и количеством мест для пассажиров. Двигатель определяется...

Наследование классов - C++
Здравствуйте, начал изучать наследование классов и не могу понять как ведут себя конструкторы с параметром. Вот код, но он печатает на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru