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

Инициализация конструктора базового класса - C++

Восстановить пароль Регистрация
 
Игорюня
 Аватар для Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
30.03.2014, 11:09     Инициализация конструктора базового класса #1
C++
1
2
3
4
5
6
7
class animal
{
public:
    animal(int a):ianimal(a){}
protected:
         int ianimal;
};
C++
1
2
3
4
5
6
7
class bird:public animal
{
public:
    bird(int a,int b):animal(a),ibird(b){}
protected:
    int ibird;
};
C++
1
2
3
4
5
6
7
class horse:public animal
{
public:
    horse(int a,int b):animal(a),ihorse(b){}
protected:
    int ihorse;
};
C++
1
2
3
4
5
6
7
class pegasus:public bird,public horse
{
public:
    pegasus(int a,int b,int c,int d,int e):horse(a,b),bird(c,d),ipegasus(e){}
private:
    int ipegasus;
};
Если мы создадим объект класса pegasus,то конструктор pegasus инициализирует конструкторы классов bird и horse,каждый из которых инициализирует конструктор класса animal.Вопрос,каким значением инициализируется конструктор animal,если в него одновременно передают значение два конструктора bird и animal.Судя по логам,конструктор animal примет значение конструктора,который вызовется последним,то есть конструктором bird.Возможно,что такой код верен,но мне кажется,что возможна путаница с аргументами.

Добавлено через 27 минут
Решил проблему виртуальным наследованием.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2014, 11:09     Инициализация конструктора базового класса
Посмотрите здесь:

Вызов конструктора базового класса C++
C++ Инициализация членов производного кл. из конструктора базового кл.
C++ Знакомство с наследованием. Вызов конструктора базового класса
C++ инициализация конструктора класса
C++ Инициализация конструктора по умолчанию
C++ Использование конструктора базового класса при динамическом выделении памяти
C++ Вызов конструктора базового класса из порожденного
C++ Создать массив указателей базового класса и присвоить ему адреса каждого из екземпляров класса
Инициализация статических объектов без конструктора C++
C++ Структура программы или наследование, без использования конструктора базового класса
C++ Почему после конструктора первого класса стоит двоеточие и имя переменной, а не инициализация?
Наследование конструктора из базового класса C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
30.03.2014, 11:18     Инициализация конструктора базового класса #2
Цитата Сообщение от Игорюня Посмотреть сообщение
Решил проблему виртуальным наследованием.
Если ещё не читали. Ромбовидное наследование
Yandex
Объявления
30.03.2014, 11:18     Инициализация конструктора базового класса
Ответ Создать тему
Опции темы

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