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

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

Войти
Регистрация
Восстановить пароль
 
Nishen
308 / 158 / 56
Регистрация: 26.02.2015
Сообщений: 788
#1

Публичное и приватное наследование классов - C++

29.07.2015, 15:11. Просмотров 387. Ответов 6
Метки нет (Все метки)

Скажите, а какой из способов лучше использовать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class A{
   public:
      void show() const{
         cout << "Class A" << endl;
      }
};
class B : public(private) A{
};
 
int main(){
   B objB;
   objB.show();
   
   system("PAUSE");
   return 0;
}
или
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class A{
   public:
      void show() const{
         cout << "Class A" << endl;
      }
};
class B{
   private:
      A objA;
   public:
      void show(){
         objA.show();
      }
};
 
int main(){
   B objB;
   objB.show();
 
   system("PAUSE");
   return 0;
}
Подходы разные, но результат один и тот же.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2015, 15:11     Публичное и приватное наследование классов
Посмотрите здесь:

C++ Наследование классов!
C++ Наследование классов
C++ Наследование классов
C++ Наследование Классов
наследование классов C++
наследование классов C++
C++ Наследование классов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Maksumko
12 / 12 / 4
Регистрация: 13.06.2015
Сообщений: 60
29.07.2015, 15:22     Публичное и приватное наследование классов #2
я думаю что зависит от того какие классы - например есле класс А - хранит имя и возраст + родной город
, а класс Б хранит зарплату и телефон то лучше унаследовать. ( мб я не прав только учю ).
Nishen
308 / 158 / 56
Регистрация: 26.02.2015
Сообщений: 788
29.07.2015, 15:56  [ТС]     Публичное и приватное наследование классов #3
Я вот не понимаю, для чего нужно делать несколько возможностей реализовать одно и то же.
И разницы (не в синтаксисе) между двумя этими способами не вижу никакого.
Avazart
7066 / 5243 / 263
Регистрация: 10.12.2010
Сообщений: 23,069
Записей в блоге: 17
29.07.2015, 18:15     Публичное и приватное наследование классов #4
Цитата Сообщение от Nishen Посмотреть сообщение
Подходы разные, но результат один и тот же.
Я бы не сказал что один и тот же.
Применение зависит от логической сути моделированных объектов и способа их использования.

Добавлено через 6 минут
К примеру для такого случая(полиморфного использования) применимо только наследование.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class AbstractShape
{
    public:
       virtual ~AbstractShape(){}
       void virtual draw()const=0;
};
 
class Rect
{
   public:
     void draw()const/*override*/{ /*  */ }
};
 
class Circle
{
   public:
     void draw()const/*override*/{ /*  */ }
};
C++
1
2
3
4
5
6
7
8
std::vector<AbstractShape*> shapes;
shapes.push_back(new Rect);
shapes.push_back(new Circle);
 
for(/* */)
{
    shapes[i]->draw();
}
Добавлено через 9 минут
Реализация отношений между классами is-a, has-a, uses-a в С++
hoggy
6168 / 2534 / 444
Регистрация: 15.11.2014
Сообщений: 5,606
Завершенные тесты: 1
29.07.2015, 18:37     Публичное и приватное наследование классов #5
Цитата Сообщение от Nishen Посмотреть сообщение
Скажите, а какой из способов лучше использовать:
тот, что субъективно проще
Fallenworld
76 / 76 / 9
Регистрация: 14.04.2014
Сообщений: 408
29.07.2015, 19:01     Публичное и приватное наследование классов #6
Цитата Сообщение от Nishen Посмотреть сообщение
Скажите, а какой из способов лучше использовать
Дело все в том, что для того чтобы понять разницу между этими 2мя способами, нужно привести примеры иллюстрирующие эту разницу.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2015, 19:07     Публичное и приватное наследование классов
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Mr.X
Эксперт С++
3040 / 1685 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
29.07.2015, 19:07     Публичное и приватное наследование классов #7
Цитата Сообщение от Nishen Посмотреть сообщение
Скажите, а какой из способов лучше использовать
Открытое наследование реализует отношение "является разновидностью", т.е. описывает подмножество некоторого множества.
Закрытое наследование и агрегирование (включение) реализуют отношение "реализуется посредством".
Основной принцип ООП - минимизация зависимостей. При агрегировании зависимость меньше, поэтому при прочих равных надо предпочитать его.
Yandex
Объявления
29.07.2015, 19:07     Публичное и приватное наследование классов
Ответ Создать тему
Опции темы

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