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

Конструктор при множественном наследовании - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Задача на побитовые операции http://www.cyberforum.ru/cpp-beginners/thread335626.html
объясните пожалуйста, как решить эту задачу: Упражнение 2.6. Напишите функцию setbits(x, p, n, y), возвращающую значение x, в котором n битов, начиная с p-й позиции, заменены на n правых разрядов из y (остальные биты не изменяются).
C++ Как это запустить в wxDev-C++... Здравстуйте, простите за идиотские вопросы, но с работой в консоли под эти компилятором вроде разобрался, а программа Hello Wold на gui(трырил код откуда-то из интернетов, на линуксе заработал, но у меня стоит чертов windows)таки не запускается... подскажите пожалуйста, какой проэкт создавать, какие include файлы здесь должны быть и что делать чтоб она запустилась наконец... заренее... http://www.cyberforum.ru/cpp-beginners/thread335625.html
Захват функции ? C++
Полиморфизм Полиморфизмом в программировании называется переопределение наследником функций-членов базового класса, например: class Figure { ... void Draw() const; ... };
C++ Скопировать двумерный массив
Как скопировать массив меньшей размерности в массив большей размерности? Например скопировать q в массив q1. И у массива q и у массива q1 типы int.
C++ Представление графа в виде списка вершин. http://www.cyberforum.ru/cpp-beginners/thread335592.html
Стыдно спрашивать, просто хочется сделать чтобы все работало правильно и быстро. Дело в том, что раньше я всегда хранил граф в виде списка ребер, если знаете(head, next, to). А теперь хочу сделать, чтобы было все четко со списком вершин(если это так называется), но не уверен в себе. В общем, есть такое представление: vetor<vector<int>> graph; Собственно, я хочу узнать, как...
C++ Поиск с барьером или без него Линейный поиск в числовом массиве с барьером и без барьера по числовому ключу. Как здесь понимать с барьером или без него? Что он представляет? подробнее

Показать сообщение отдельно
proggr
0 / 0 / 0
Регистрация: 24.03.2011
Сообщений: 3
23.07.2011, 16:28     Конструктор при множественном наследовании
Код
#include <string>

class Worker   // an abstract base class
{
private:
    std::string fullname;
    long id;
public:
    Worker() : fullname("no one"), id(0L) {}
    Worker(const std::string & s, long n)
            : fullname(s), id(n) {}
    virtual ~Worker() = 0; // pure virtual function   
};

class Waiter : virtual public Worker
{
private:
    int panache;
public:
    Waiter() : Worker(), panache(0) {}
    Waiter(const std::string & s, long n, int p = 0)
            : Worker(s, n), panache(p) {}
    Waiter(const Worker & wk, int p = 0)
            : Worker(wk), panache(p) {}    
};

class Singer : virtual public Worker
{
private:    
    int voice;
public:
    Singer() : Worker(), voice(other) {}
    Singer(const std::string & s, long n, int v = 0)
            : Worker(s, n), voice(v) {}
    Singer(const Worker & wk, int v = other)
            : Worker(wk), voice(v) {}   
};

// multiple inheritance
class SingingWaiter : public Singer, public Waiter
{
public:
    SingingWaiter()  {}
    SingingWaiter(const std::string & s, long n, int p = 0,
                            int v = other)
            : Worker(s,n), Waiter(s, n, p), Singer(s, n, v) {}
    SingingWaiter(const Worker & wk, int p = 0, int v = other)
            : Worker(wk), Waiter(wk,p), Singer(wk,v) {}
    SingingWaiter(const Waiter & wt, int v = 0)
            : Worker(wt),Waiter(wt), Singer(wt,v) {}
    SingingWaiter(const Singer & wt, int p = 0)
            : Worker(wt),Waiter(wt,p), Singer(wt) {}
    
};
Не пойму один момент. В конструкторе:

SingingWaiter(const Waiter & wt, int v = 0) : Worker(wt),Waiter(wt), Singer(wt,v) {}

Worker(wt) - это Worker(const Waiter & wt), здесь используется Worker(const Worker & wk), которому по ссылке передается объект произв. класса, здесь понятно.

Waiter(wt) - это Waiter(const Waiter & wt), я так понимаю, что здесь конструктор произв. класса вызывает конструктор базового класса по умолчанию, а в своем классе производит почленное копирование.

Singer(wt, v) - вот здесь мне не понятно, может быть кто-нибудь объяснит? Буду очень признателен.
Я так понимаю, что Singer(wt, v) - это Singer(const Waiter & wt, v), но в классе Singer нет такого конструктора.

Это фрагмент кода из книги Стивена Прата.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru