在虚拟继承中应该写“public virtual”还是“virtual public”?
Posted
技术标签:
【中文标题】在虚拟继承中应该写“public virtual”还是“virtual public”?【英文标题】:Should you write "public virtual" or "virtual public" in virtual inheritance? 【发布时间】: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,当我们使用多重继承时,我们应该使用基类的虚拟继承。 【参考方案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】:两者都是标准的。使用本地编码约定所需的任何一种。
【讨论】:
以上是关于在虚拟继承中应该写“public virtual”还是“virtual public”?的主要内容,如果未能解决你的问题,请参考以下文章
c#类中定义public virtual ListItem SelectedItem get; 只能get不可以set,请问有啥方式可以set么?
VC6 编译错误error LNK2001: unresolved external symbol "public: virtual struct