Вы должны написать "виртуальный" и "виртуальный" в виртуальное наследование?


На основе http://en.wikipedia.org/wiki/Virtual_inheritance

class Animal 
{
...
};

// Two classes virtually inheriting Animal:
class Mammal : public virtual Animal 
{
...
};

Я также видел книги, использующие следующий синтаксис,

class Mammal : virtual public Animal 
{
...
};

Вопрос> Какой из них является стандартом C++?

Спасибо

2 7

2 ответа:

Из ISO / IEC 14882: 2003 (E) - 10.1

Список базовых классов может быть задан в определении класса с помощью обозначения:

base-clause:
    : base-specifier-list

base-specifier-list:
    base-specifier
    base-specifier-list , base-specifier

base-specifier:
    ::opt nested-name-specifieropt class-name
    virtual access-specifier opt ::opt nested-name-specifieropt class-name
    access-specifier virtual opt ::opt nested-name-specifieropt class-name

access-specifier:
    private
    protected
    public

Обратите внимание, что рекомендуется либо одно.

Оба являются стандартными. Используйте то, что требуют местные соглашения о кодировании.