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

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

Восстановить пароль Регистрация
 
Nishen
 Аватар для Nishen
180 / 86 / 34
Регистрация: 26.02.2015
Сообщений: 483
29.07.2015, 15:11     Публичное и приватное наследование классов #1
Скажите, а какой из способов лучше использовать:
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++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Maksumko
12 / 12 / 4
Регистрация: 13.06.2015
Сообщений: 60
29.07.2015, 15:22     Публичное и приватное наследование классов #2
я думаю что зависит от того какие классы - например есле класс А - хранит имя и возраст + родной город
, а класс Б хранит зарплату и телефон то лучше унаследовать. ( мб я не прав только учю ).
Nishen
 Аватар для Nishen
180 / 86 / 34
Регистрация: 26.02.2015
Сообщений: 483
29.07.2015, 15:56  [ТС]     Публичное и приватное наследование классов #3
Я вот не понимаю, для чего нужно делать несколько возможностей реализовать одно и то же.
И разницы (не в синтаксисе) между двумя этими способами не вижу никакого.
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,604
Записей в блоге: 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
5228 / 2119 / 403
Регистрация: 15.11.2014
Сообщений: 4,806
Завершенные тесты: 1
29.07.2015, 18:37     Публичное и приватное наследование классов #5
Цитата Сообщение от Nishen Посмотреть сообщение
Скажите, а какой из способов лучше использовать:
тот, что субъективно проще
Fallenworld
75 / 75 / 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++

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

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

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