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

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

Войти
Регистрация
Восстановить пароль
 
Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
#1

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

30.03.2014, 11:09. Просмотров 569. Ответов 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++
Добрый вечер, уважаемые форумчане! Сразу код; вопрос ниже... #include <iostream> using namespace std; class One { ...

Вызов конструктора базового класса - C++
Здравствуйте! Я вот начал изучать C# и немножечко освежил ООП. Но вот у меня вопрос. Я точно помню, что класс-наследник (конструкторы не...

Наследование конструктора из базового класса - C++
#include "stdafx.h" #include <iostream> #include <cstring> using namespace std; //////////////////// class String { ...

Вызов конструктора базового класса из порожденного - C++
Есть Базовый класс студент: имеет поля: фамилия, адрес, тел., возраст. Порожденный класс группа: имя группы, кол-во студентов в...

Использование конструктора базового класса наследником - C++
Доброго дня, коллеги! Решал одну задачку и столкнулся с проблемой. По условию дан класс String, моделирующий работу типа данных string....

Знакомство с наследованием. Вызов конструктора базового класса - C++
В инете немного почиатл про наследование и решил сразу перейти к практике Есть два класа point и apoint вот хидер #ifndef...

инициализация конструктора класса - C++
инициализация конструктора класса Rectangle::Rectangle(int w, int h): itsWidth(w), itsHeight(h) {} Изучаю с++. объясните...

Использование конструктора базового класса при динамическом выделении памяти - C++
Есть базовый класс, от него наследуются несколько классов, свой конструктор я определил в базовом классе. Далее нужно сделать так:parent...

Структура программы или наследование, без использования конструктора базового класса - C++
Всем доброго времени суток. Снова прошу вас о помощи! Код располагается по ссылке в спойлере - не вставлю сюда, так как слишком...

Почему после конструктора первого класса стоит двоеточие и имя переменной, а не инициализация? - C++
#include <iostream> template <typename T> class first { public: T value; first (T n) : value(n) {} virtual...

Вызов базового конструктора - C++
Такая вот ситуация. Думаю, проблема в объявлении и инициализации массива m. Я бы инициализировал уже в конструкторе, но сначала вызовет...

Инициализация конструктора по умолчанию - C++
почему если инициализировать поля класса в конструкторе по умолчанию так: MyClass::MyClass() { int m=0; int t=0; } то поля...


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

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

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