Заблокирован
1

Пояснить, почему в примере не рекомендуется использовать закрытое наследование

15.05.2015, 14:32. Показов 2226. Ответов 34
Метки нет (Все метки)

Всем доброго времени суток !

Помогите пожалуйста разобраться с этой фразой на примере .

То что я знаю про закрытое наследование , так это-то , что к методам базового класса я могу обращаться

только из методов производного.

Эта фраза ввела меня в ступор.
Миниатюры
Пояснить, почему в примере не рекомендуется использовать закрытое наследование  
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2015, 14:32
Ответы с готовыми решениями:

Как используя закрытое наследование использовать 2 объекта базового класса?
Доброго времени суток. Учусь по книге "Прата С. Язык программирования C++. Лекции и упражнения....

Почему не рекомендуется использовать препроцессор?
Я сейчас активно пользуюсь #define для упрощения понимания кода. Например, у меня сложная система...

Закрытое наследование
Всем привет. Выполняю упражнение в книжке Прата, тема-закрытое наследование Подскажите пожалуйста,...

Закрытое наследование
Добрый день, форум:) Помогите разобраться: Базовый класс vector и от него наследую допустим...

34
Заблокирован
17.05.2015, 13:03  [ТС] 21
а русская версия есть ?

под хр пойдет ?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Форумчанин
Эксперт CЭксперт С++
8190 / 5040 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
17.05.2015, 16:48 22
Цитата Сообщение от RAFA91 Посмотреть сообщение
а русская версия есть ?
Есть
https://www.visualstudio.com/r... ty-vs.aspx
Но не рекомендую. Некоторые вещи лучше не переводить.
Цитата Сообщение от RAFA91 Посмотреть сообщение
под хр пойдет ?
нет.
1
Заблокирован
18.05.2015, 11:47  [ТС] 23
ну а если тогда вижуал 8 ?

не хочу менять винду
0
Форумчанин
Эксперт CЭксперт С++
8190 / 5040 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
18.05.2015, 14:03 24
Цитата Сообщение от RAFA91 Посмотреть сообщение
ну а если тогда вижуал 8 ?
не хочу менять винду
Скачайте Codeblocks с mingw. Там, конечно, не все фишки С++11 поддерживаются (как и студии 2013), но большинство есть. На xp идёт.

Добавлено через 28 секунд
Компилятор там всяк лучше того, что в комплекте с VS.
2
Заблокирован
18.05.2015, 14:17  [ТС] 25
спасибо большое буду думать.
0
Заблокирован
15.11.2015, 16:21  [ТС] 26
Добрый день !

Подскажите пожалуйста почему в классе C нету доступа к переменной x . в классе B доступ к ней есть

она же в protected:

_____________________________

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class A
{
protected:
    int x;
public:
};
 
class B : private A
{
public:
};
 
class C : public B
{
public:
};
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
15.11.2015, 16:59 27
Цитата Сообщение от RAFA91 Посмотреть сообщение
в классе B доступ к ней есть
Потому что В непосредственный наследник от A (хоть и private).
Цитата Сообщение от RAFA91 Посмотреть сообщение
в классе C нету доступа к переменной x
Именно из-за private наследования A в классе B. Т.е. всё что будет наследоваться от B уже не может увидеть того, что в protected секции A
0
Заблокирован
15.11.2015, 18:26  [ТС] 28
уточнение для закрепления.

для обьекта класса С доступ к методам класса A может идти только из методов класса B ?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
15.11.2015, 20:37 29
Цитата Сообщение от RAFA91 Посмотреть сообщение
для обьекта класса С доступ к методам класса A может идти только из методов класса B ?
да.
1
Заблокирован
16.11.2015, 15:52  [ТС] 30
для закрепления знаний.

есть такое

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class A
{
protected:
    int x;
public:
};
 
class B : private A
{
public:
};
 
class C : private B
{
public:
};
в данном случае что то изменится при замене
C++
1
 class C : private B
на
C++
1
class C : protected B
?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
16.11.2015, 18:30 31
Цитата Сообщение от RAFA91 Посмотреть сообщение
для закрепления знаний.
Читай книги. Экспериментируй.
0
Заблокирован
17.11.2015, 15:05  [ТС] 32
я уже почитал и поэкспериментировал, теперь жду уточнения от знатоков.

в данном случае что то изменится при замене


C++
1
 class C : private B
на
C++
1
class C : protected B

пускай будет класс С конечной точкой наследования.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
17.11.2015, 15:18 33
Цитата Сообщение от RAFA91 Посмотреть сообщение
я уже почитал и поэкспериментировал
Молодец. Можешь поделиться результатами для последующих читателей.
Цитата Сообщение от RAFA91 Посмотреть сообщение
жду уточнения от знатоков.
Чтобы что-то уточнять, надо иметь базовую версию, а ты ее не озвучил. Т.о. уточнять нечего.
0
Заблокирован
17.11.2015, 17:32  [ТС] 34
Цитата Сообщение от Tulosba Посмотреть сообщение
Можешь поделиться результатами для последующих читателей.
как я понял при закрытом наследовании class B : private A методы класса А распространяется только до класса B ,

а защищенное наследование class B : protected A распространяет методы класса А еще на уровень ниже.

может что то и не так написал !
0
Эксперт CЭксперт С++
5084 / 2269 / 332
Регистрация: 20.02.2013
Сообщений: 5,598
Записей в блоге: 19
17.11.2015, 17:47 35
Цитата Сообщение от MrGluck Посмотреть сообщение
Там, конечно, не все фишки С++11 поддерживаются (как и студии 2013), но большинство есть.
Так не обязательно пользоваться компилятором, который там в наборе идёт вместе с Code::Blocks (а именно MinGW 4.8.1). Можно ведь к Code::Blocks прикрутить LLVM Clang, например. Ну или тот же MinGW, только поновее. Было бы желание.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.11.2015, 17:47
Помогаю со студенческими работами здесь

закрытое наследование
Объясните, плиз. Заранее спасибо В классе Base поле X находится в части private, производный...

Закрытое наследование
Помогите, пожалуйста, ответить на такой вопрос: Что такое переопределение методов (в производном...

Закрытое наследование. Вывод строки
Здравствуйте. Необходимо вывести элемент класса std::string в данном случае: class Wine :...

Закрытое наследование, как добраться до функции?
Всем привет! Собственно, я никак не могу понять, как мне использовать функцию sum(), класса...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru