基于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 ++标准?
谢谢
答案 0 :(得分:14)
来自 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
请注意,建议使用其中之一。
答案 1 :(得分:4)
两者都是标准的。使用本地编码约定所需的。