【问题标题】:Should you write "public virtual" or "virtual public" in virtual inheritance?在虚拟继承中应该写“public virtual”还是“virtual public”?
【发布时间】:2011-03-29 02:19:59
【问题描述】:

基于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++ 标准?

谢谢

【问题讨论】:

  • 仅供参考,这不是多重继承,这是您要询问的虚拟继承。
  • @Adam,当我们使用多重继承时,我们应该使用基类的虚拟继承。

标签: c++ inheritance virtual-inheritance


【解决方案1】:

来自 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

请注意,推荐使用任何一种。

【讨论】:

  • @q0987 - 谷歌搜索提到的标准名称,你应该能找到一个:)
  • 这是语法,但语义是什么,意思是等价的?
【解决方案2】:

两者都是标准的。使用本地编码约定所需的任何一种。

【讨论】:

    猜你喜欢
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 2021-03-25
    • 1970-01-01
    相关资源
    最近更新 更多