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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 43, средняя оценка - 4.67
No10
30 / 28 / 2
Регистрация: 03.06.2010
Сообщений: 465
#1

Наследования класса как public, private и protected - C++

27.06.2012, 14:52. Просмотров 5657. Ответов 6
Метки нет (Все метки)

Ну допустим у нас есть класс который наследуется как public:
C++
1
2
3
class Cylinder : public Point {
// ...здесь код
}
Класс Cylinder наследует protected и public элементы, элементы private не наследуются, класса Point. А что насчёт наследования как private и protected? Пожалуйста объясните. В моей книге этого не написано.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2012, 14:52     Наследования класса как public, private и protected
Посмотрите здесь:

C++ Наследование. Помогите с этими public, protected. private
функции класса раздела private реализуються так же как и раздела public? в смысле виртуальных функций, дружественных функций, и т.д. C++
C++ Предложите примеры деклараций классов с protected и private членами
Ключевые слова private, public, protected C++
C++ Для чего нужны модификаторы protected, private, public
C++ Как переделать с public на private и создать методы для закрытых полей?
C++ Protected Private Public
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт CЭксперт С++
6614 / 3805 / 495
Регистрация: 29.11.2010
Сообщений: 10,044
27.06.2012, 14:54     Наследования класса как public, private и protected #2
При private-наследовании все члены становятся private.
При protected - public становится protected, остальные как есть (private=>private, protected=>protected).
CheshireCat
Эксперт С++
2891 / 1240 / 78
Регистрация: 27.05.2008
Сообщений: 3,340
27.06.2012, 14:56     Наследования класса как public, private и protected #3
Нет. Наследуются все без исключения элементы (члены базового класса). Разница в правах доступа к этим членам: класс-наследник имеет доступ к public и protected членам базового класса, но не к private.
gray_fox
What a waste!
1256 / 1139 / 55
Регистрация: 21.04.2012
Сообщений: 2,361
Завершенные тесты: 3
27.06.2012, 14:56     Наследования класса как public, private и protected #4
Цитата Сообщение от No10 Посмотреть сообщение
элементы private не наследуются
Наследуются, просто доступа из Cylinder к ним нет.
Цитата Сообщение от No10 Посмотреть сообщение
А что насчёт наследования как private и protected?
При protected все public члены базового класса становятся protected членами производного, при private наследовании - все public и protected члены базвого класса становятся private членами производного.
No10
30 / 28 / 2
Регистрация: 03.06.2010
Сообщений: 465
27.06.2012, 14:59  [ТС]     Наследования класса как public, private и protected #5
Цитата Сообщение от MrGluck Посмотреть сообщение
При private-наследовании все члены становятся private.
Тоесть при наследовании как private, производный класс не имеет доступа ни к одному из элементов базового?
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
27.06.2012, 19:12     Наследования класса как public, private и protected #6
No10, Воистину

Добавлено через 25 минут
Нет, не совсем так, неверно понял вопрос. При private наследовании через класс нельзя обратиться к открытым полям базового. Пример.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
class C
{
public:
   void print()
   {
   }
};
 
class D : private C
{
public:
   void prnt() { print(); }
};
 
int main()
{
   D d;
   d.prnt();
   d.print();
}
http://liveworkspace.org/code/1b16fb...5e6b32a18c059c
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2012, 19:18     Наследования класса как public, private и protected
Еще ссылки по теме:

C++ private, protected, public
C++ Private и public члены класса
Public и Private C++
Рекомендация: сначало public, потом protected/private C++
Public, Private, Protected (смысл применения) C++

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

Или воспользуйтесь поиском по форуму:
gray_fox
What a waste!
1256 / 1139 / 55
Регистрация: 21.04.2012
Сообщений: 2,361
Завершенные тесты: 3
27.06.2012, 19:18     Наследования класса как public, private и protected #7
Цитата Сообщение от No10 Посмотреть сообщение
Тоесть при наследовании как private, производный класс не имеет доступа ни к одному из элементов базового?
Имеет, а вот извне они уже не доступны (т.к. в наследнике стали private).
Yandex
Объявления
27.06.2012, 19:18     Наследования класса как public, private и protected
Ответ Создать тему
Опции темы

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