Форум программистов, компьютерный форум CyberForum.ru

класс наследник - C++

Восстановить пароль Регистрация
 
dmitro_ua
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 11
22.08.2013, 17:39     класс наследник #1
Добрый день! Интересует вопрос отношения между parent-классом и child'ом. Допустим в protected parent класса описаны какие-то методы, а класс наследник имеет доступ к protected parent'a, нужно ли в наследнике заново перечислять все методы? или можно брать некоторые методы прям с парента?
Допустим:

C++
1
2
3
4
5
6
7
8
9
10
11
class Parent
{
protected:
int method 1();
int method 2();
}
 
class child: protected Parent
{
...
}
Можно ли вызвать в main'е метод таким способом:
C++
1
2
child NewChild();
NewChild.method 1();
????????????????????????????????
или метод обязательно дублировать в описании класса в header'е???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2013, 17:39     класс наследник
Посмотрите здесь:

C++ Базовый класс - текстовый файл и наследник...
Создать класс, описывающий треугольник, и наследник, описывающий прямые треугольной призмы C++
Создать классы, описывающий прямоугольники и класс-наследник, описывающий прямоугольные параллепипеды C++
C++ Написать класс и его наследник
C++ Сознатие графического приложения (Создать класс-наследник от FIGURE)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
no_wearines
 Аватар для no_wearines
52 / 48 / 2
Регистрация: 01.01.2012
Сообщений: 322
22.08.2013, 18:15     класс наследник #2
Цитата Сообщение от dmitro_ua Посмотреть сообщение
или можно брать некоторые методы прям с парента?
Можно.
Цитата Сообщение от dmitro_ua Посмотреть сообщение
Можно ли вызвать в main'е метод таким способом:
child NewChild();
NewChild.method 1();
Нет. Ваш method1 находится в секции protected - в программе-драйвере он невидим! Другое дело, если public.
dmitro_ua
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 11
22.08.2013, 18:49  [ТС]     класс наследник #3
Цитата Сообщение от no_wearines Посмотреть сообщение
Можно.

Нет. Ваш method1 находится в секции protected - в программе-драйвере он невидим! Другое дело, если public.
public видим только, так сказать, 1му поколению детей. Внукам он уже не видим?
no_wearines
 Аватар для no_wearines
52 / 48 / 2
Регистрация: 01.01.2012
Сообщений: 322
22.08.2013, 18:57     класс наследник #4
Цитата Сообщение от dmitro_ua Посмотреть сообщение
public видим только, так сказать, 1му поколению детей. Внукам он уже не видим?
Как понять?
dmitro_ua
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 11
22.08.2013, 22:25  [ТС]     класс наследник #5
то есть, child'у будут доступны методы, но child'у child'а нет! правильно?
iRomul
 Аватар для iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 474
Завершенные тесты: 1
22.08.2013, 22:27     класс наследник #6
Если тип наследование public или protected, то они будут доступны в любом уровне наследования.
Просто представьте себе дочерний класс так, будто вы скопировали содержимое родительского и добавили еще чего-то.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.08.2013, 22:32     класс наследник #7
Цитата Сообщение от dmitro_ua Посмотреть сообщение
public видим только, так сказать, 1му поколению детей. Внукам он уже не видим?
Где у вас public? Разговор о protected идёт.
dmitro_ua
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 11
22.08.2013, 22:49  [ТС]     класс наследник #8
Ниже моего поста мне написали, что сделав protected public'ом можно открыть доступ к функциям, то есть ответили на мой вопрос. И мне вроде бы когда-то говорили, что лишь первая ветка child'ов видит public. Верно или нет?
no_wearines
 Аватар для no_wearines
52 / 48 / 2
Регистрация: 01.01.2012
Сообщений: 322
22.08.2013, 22:52     класс наследник #9
нет.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class h1 {
public:
int q;
};
 
class h2 : public h1 {
public:
};
 
class h3 : public h2 {
public:
};
 
 
int main() {
 
h3 w;
w.q = 23;
 
getch();
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2013, 22:53     класс наследник
Еще ссылки по теме:

класс наследник на основе базового класса C++
Написать класс «множество» – наследник класса «массив» C++
Наследование: базовый класс - массив, наследник - матрица C++

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

Или воспользуйтесь поиском по форуму:
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
22.08.2013, 22:53     класс наследник #10
Цитата Сообщение от dmitro_ua Посмотреть сообщение
мне вроде бы когда-то говорили, что лишь первая ветка child'ов видит public.
public доступно отовсюду, во всех наследниках, и вне иерархии тоже.
Yandex
Объявления
22.08.2013, 22:53     класс наследник
Ответ Создать тему
Опции темы

Текущее время: 01:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru