Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Nishen
453 / 264 / 84
Регистрация: 26.02.2015
Сообщений: 1,242
Завершенные тесты: 2
#1

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

29.07.2015, 15:11. Просмотров 451. Ответов 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;
}
Подходы разные, но результат один и тот же.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2015, 15:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Публичное и приватное наследование классов (C++):

Заменить наследование классов на наследование интерфейсов - C++
#include &lt;iostream&gt; #include &lt;assert.h&gt; using namespace std; int people_on_base = 100; int vehicles_on_base = 100; double...

Наследование классов. Копирование производных классов - C++
Здравствуйте всем, у меня такой вопрос: написал код #include &quot;stdafx.h&quot; class A //Создаем класс А { int mA; ...

наследование классов - C++
Есть базовый класс class List { protected: struct Element { char name; int n_bus; int n_mar;

Наследование Классов с++ - C++
при компицяции выдаёт Unresolved external 'chelovek::chelovek(int,int,int)' referenced from ...*.OBJ В чом ошибка??? #include...

Наследование классов - C++
я решил по примеру одной задачи свою, но там много ошибок, может ктото сможет поправить их. Наследование. ...

Наследование классов - C++
Есть базовый класс: class people { public: char *name; }; Есть производный класс, который наследуется от базового: class...

6
Maksumko
12 / 12 / 4
Регистрация: 13.06.2015
Сообщений: 60
29.07.2015, 15:22 #2
я думаю что зависит от того какие классы - например есле класс А - хранит имя и возраст + родной город
, а класс Б хранит зарплату и телефон то лучше унаследовать. ( мб я не прав только учю ).
0
Nishen
453 / 264 / 84
Регистрация: 26.02.2015
Сообщений: 1,242
Завершенные тесты: 2
29.07.2015, 15:56  [ТС] #3
Я вот не понимаю, для чего нужно делать несколько возможностей реализовать одно и то же.
И разницы (не в синтаксисе) между двумя этими способами не вижу никакого.
0
Avazart
Эксперт С++
7423 / 5513 / 316
Регистрация: 10.12.2010
Сообщений: 24,615
Записей в блоге: 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 в С++
0
hoggy
6803 / 2990 / 515
Регистрация: 15.11.2014
Сообщений: 6,765
Завершенные тесты: 1
29.07.2015, 18:37 #5
Цитата Сообщение от Nishen Посмотреть сообщение
Скажите, а какой из способов лучше использовать:
тот, что субъективно проще
0
Fallenworld
76 / 76 / 9
Регистрация: 14.04.2014
Сообщений: 408
29.07.2015, 19:01 #6
Цитата Сообщение от Nishen Посмотреть сообщение
Скажите, а какой из способов лучше использовать
Дело все в том, что для того чтобы понять разницу между этими 2мя способами, нужно привести примеры иллюстрирующие эту разницу.
0
Mr.X
Эксперт С++
3054 / 1699 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
29.07.2015, 19:07 #7
Цитата Сообщение от Nishen Посмотреть сообщение
Скажите, а какой из способов лучше использовать
Открытое наследование реализует отношение "является разновидностью", т.е. описывает подмножество некоторого множества.
Закрытое наследование и агрегирование (включение) реализуют отношение "реализуется посредством".
Основной принцип ООП - минимизация зависимостей. При агрегировании зависимость меньше, поэтому при прочих равных надо предпочитать его.
0
29.07.2015, 19:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2015, 19:07
Привет! Вот еще темы с ответами:

Наследование классов. - C++
Добрый день! Помогите, пожалуйста, разобраться с наследованием классов. И, вероятно, неправильно использую функцию(ругается, что функция не...

Наследование классов - C++
Здравствуйте. Помогите пожалуйста решить проблему по наследованию классов. Есть базовый класс class parent { ...

Наследование классов - C++
Добрый день. Есть код: #include &lt;iostream&gt; using namespace std; class A { public: A(int x, int y) { a=x;

наследование классов - C++
нужно создать программу состоящую из классов по принципу наследования то есть отец-сын-внук заранее спасибо!!


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

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

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