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

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

Войти
Регистрация
Восстановить пароль
 
bearwoolfs
15 / 15 / 1
Регистрация: 10.01.2011
Сообщений: 275
#1

класс произведенный от другого private - C++

24.10.2011, 17:41. Просмотров 896. Ответов 12
Метки нет (Все метки)

Здравствуйте для чего можно использовать класс объявленный как private хотя он произведен от него ????
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
using namespace std;
 
class Number
{
public:
 
    
};
class One:private Number// для чего нужен класс private ???
{
 
};
 
 
int main()
{
return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2011, 17:41     класс произведенный от другого private
Посмотрите здесь:

Как создать класс, который содержит элементы другого класса C++
Возможен ли класс для обработки объекта другого класса? C++
C++ Как организовать добавление в один класс элементов другого в ходе работы программы
C++ Элементарный класс для работы с файлами, компилятор выдает ошибку, что не так с private
C++ Класс как параметр другого класса
C++ Класс field, все поля private
C++ Передача указателя в класс на объект другого класса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Inlight
43 / 42 / 2
Регистрация: 17.09.2008
Сообщений: 98
24.10.2011, 19:46     класс произведенный от другого private #2
Отсюда: Если класс объявлен как базовый для другого класса со спецификатором доступа private, тогда public и protected члены базового класса доступны как private члены производного класса.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
24.10.2011, 20:05     класс произведенный от другого private #3
Например, есть класс, содержащий мне нужный функционал, но больше чем надо. Я делаю private наследование и все нужные мне методы переопределяю и в этих методах вызываю методы базового класса
C++
1
2
3
4
5
6
7
class Derived : private Base
{
     void print() const
     { 
          Base::print();
     }
};
Т.е. я использую только метод print класса Base, а остальные методы мне не нужны.
Bers
Заблокирован
24.10.2011, 20:11     класс произведенный от другого private #4
Цитата Сообщение от Chelioss Посмотреть сообщение
Я делаю private наследование и все нужные мне методы переопределяю и в этих методах вызываю методы базового класса
А если там 10 методов, из них 5ть нужно отключить, а 5ть включить. Все пять методов переопределять придётся?

Да кстати, потерей времени из-за переадресации вызова не боитесь?

Я хочу сказать, может тогда лучше заюзать абстрактный интерфейсный класс, и от него наследовать всю дефолтную реализацию + переопределение только нужных?
LosAngeles
Заблокирован
24.10.2011, 20:13     класс произведенный от другого private #5
Цитата Сообщение от bearwoolfs Посмотреть сообщение
для чего можно использовать класс объявленный как private хотя он произведен от него
не для чего, приватное наследование реализует отношение использует, но для этого уже есть композиция
rangerx
1922 / 1531 / 139
Регистрация: 31.05.2009
Сообщений: 2,894
24.10.2011, 20:19     класс произведенный от другого private #6
Цитата Сообщение от LosAngeles Посмотреть сообщение
не для чего, приватное наследование реализует отношение использует, но для этого уже есть композиция
Не совсем так. Закрытое наследование позволяет немного больше, чем простое вложение.
bearwoolfs, у Майерса в книге "Наиболее эффективное использование C++"(если не ошибаюсь), достаточно подробно раскрыта эта тема.
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
24.10.2011, 20:22     класс произведенный от другого private #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
LosAngeles, Ну не скажи...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Dumpable
{
};
 
class DumpArgs:private Dumpable
{
};
 
class Dumper
{
public:
     template<class T>
     void operator()(const T& arg)
     {
          static_assert(std::is_base_of<Dumpable, T>::value, "T is not derived from Dumpable");
     }
};
public наследование здесь использовать не резон. А private самое то.
PointsEqual
ниначмуроФ
833 / 517 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
24.10.2011, 20:23     класс произведенный от другого private #8
Цитата Сообщение от bearwoolfs Посмотреть сообщение
для чего
1) нужно получить доступ к защищенным членам класса Number
2) требуется переопределить виртуальные функции класса Number
LosAngeles
Заблокирован
25.10.2011, 04:54     класс произведенный от другого private #9
Цитата Сообщение от ForEveR Посмотреть сообщение
public наследование здесь использовать не резон
почему?
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
25.10.2011, 10:22     класс произведенный от другого private #10
LosAngeles, У Dumpable могут быть члены не нужные конкретному дамперу. Ну и плюс... Как-то здесь более эстетично смотрится private как мне кажется (могу быть не прав).
PointsEqual
ниначмуроФ
833 / 517 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
25.10.2011, 10:46     класс произведенный от другого private #11
ForEveR, а DumpArgs является разновидностью Dumpable ?
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
25.10.2011, 10:53     класс произведенный от другого private #12
PointsEqual, В общем случае Dumpable - это интерфейс, определяющий поведение. Он позволяет выводить куда-либо аргументы.
Если класс не потомок Dumpable - он не имеет права использовать класс Dumper...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2011, 11:03     класс произведенный от другого private
Еще ссылки по теме:

Класс содержащий объекты другого класса C++
Как создать класс матрица с атрибутами private! C++
Private: C++
C++ Определить класс список элементов с конструкторами для определения списка по его размеру и копирования другого
Вспомогательный класс для сокращения кода при создании другого класса C++

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

Или воспользуйтесь поиском по форуму:
PointsEqual
ниначмуроФ
833 / 517 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
25.10.2011, 11:03     класс произведенный от другого private #13
Цитата Сообщение от ForEveR Посмотреть сообщение
Следовательно он является Dumpable
тогда приватное наследование здесь не подойдет.
Ведь его нужно использовать когда классы не связаны между собой концептуально(наверно это слово), а нужна лишь реализация какого либо метода
Yandex
Объявления
25.10.2011, 11:03     класс произведенный от другого private
Ответ Создать тему
Опции темы

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