【问题标题】:Syntax for virtual functions虚函数的语法
【发布时间】:2015-03-27 10:10:33
【问题描述】:

在 c++ 中创建虚拟函数时,我必须在哪里编写“虚拟”关键字?如果我写 virtual int function_name 而不是 int virtual function_name 像在 java 中那样写会有区别吗

【问题讨论】:

  • 你为什么不检查一下?你认为令牌的顺序有一些隐藏的挑剔吗?或者你只是不知道会不会出现语法错误。

标签: c++ syntax polymorphism


【解决方案1】:

最好写const int n; virtual void a(); volatile char s;,其中const, virtual and volatile 是修饰符。

这并不意味着它会更好或“更正确”。正如@MikeSeymour 指出的那样,这是一种审美选择。

【讨论】:

  • 为什么会更好?在我看来,这纯粹是一种审美选择。
  • @MikeSeymour,我没说它会工作更好。你是对的,这是一个审美选择,我要编辑我的答案。谢谢。
【解决方案2】:

在 c++ 中创建虚拟函数时,我必须在哪里写 virtual 关键字?

在函数声明中,在函数名之前,在任何属性说明符之后,以及其他说明符(包括函数返回类型的类型说明符)。

声明的一般语法是

simple-declaration:
    decl-specifier-seq<opt> init-declarator-list<opt> ;
    attribute-specifier-seq decl-specifier-seq<opt> init-declarator-list ;

virtual (a function-specifier) 和返回类型 (a type-specifier) 都是 decl-specifier-seq 的一部分,并且被声明的名称是 init-declarator-list 的一部分。

如果我写 virtual int function_name 而不是 int virtual function_name 会有什么不同

不,说明符的顺序没有区别。

但是,如果您将virtual 放在类型说明符之后,您可能会让一些人感到惊讶,因为放在前面更常见。在我回答这个问题之前,我不知道你能做到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 2010-10-25
    • 2010-09-07
    • 1970-01-01
    • 2013-10-04
    • 2012-02-06
    相关资源
    最近更新 更多