2011-03-29 88 views
7

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

仅供参考这不是多重继承,这是您询问的虚拟继承。 – 2011-03-29 02:44:24

+0

@Adam,当我们使用多重继承时,我们应该从基类中使用虚拟继承。 – q0987 2011-03-29 02:52:55

回答

12

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 

请注意,推荐使用。

+0

问>你是什么时候找到这个的? - 谢谢 – q0987 2011-03-29 02:53:56

+0

@ q0987 - 谷歌搜索上提到的标准名称,你应该可以找到一个:) – Mahesh 2011-03-29 03:23:10

+1

这是语法,但是语义是什么,即意思是否相等? – 2011-03-29 06:54:36

3

两者都是标准配置。使用本地编码惯例要求的任何一种。