Это работает? Множественное наследование C++ и объединение конструкторов

Рассмотрим класс Waldo, который наследуется от Foo и Baz, а именно.:

class Waldo : public Foo, public Baz {
  ...
};

Когда я создаю новый экземпляр Waldo:

   Waldo *w = new Waldo;

вызываются ли конструкторы Foo и Baz? Если они не вызываются по умолчанию, есть ли простой способ В ОБЪЯВЛЕНИИ КЛАССА ИЛИ В ОБЪЯВЛЕНИИ/ОПРЕДЕЛЕНИИ конструктора Waldo заставить их вызываться?

(Похоже, я пытаюсь создать цепочку конструкторов, а C++ якобы не делает этого. Я не уверен.)

То, что я пытаюсь сделать, это "аннотировать" различные объявления классов, где аннотации заставляют (среди прочего) экземпляры аннотированного класса быть связанными со списками, поддерживаемыми классами аннотаций. Это позволяет мне, например, пройтись по списку всех объектов с Baz-природой, применяя к ним определенную операцию, и не беспокоиться о том, не забыл ли я добавить экземпляр в список объектов с Baz-природой, потому что конструктор сделал это автоматически.

5
задан John R. Strohm 16 April 2012 в 14:47
поделиться