加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 奇怪的默认构造函数语法

发布时间:2020-12-16 03:11:50 所属栏目:百科 来源:网络整理
导读:在一些传统代码中查看以下内容: class A { A() { ... }} 什么“”用于?它在VC 2008中编译,看起来像默认构造函数, bug gcc无法编译. 解决方法 虽然在语法上在语法中被允许在这个位置(这是一个声明符的例子,它是序列:ptr-operator declarator,是一个ptr运算
在一些传统代码中查看以下内容:
class A {
    &A() { ... }
}

什么“&”用于?它在VC 2008中编译,看起来像默认构造函数,
bug gcc无法编译.

解决方法

虽然在语法上在语法中被允许在这个位置(这是一个声明符的例子,它是序列:ptr-operator declarator,&是一个ptr运算符),在语义上它没有意义,在这里是不允许的.事实上,纯粹是从语法的角度来看,Visual Studio可能会接受它.

检查可能性,这个声明看起来像一个没有返回类型的函数定义. 7 [dcl.dcl] / 6说:“只有在构造函数,析构函数和类型转换的函数声明中,可以忽略decl-specifier-seq.而没有?或者操作符的唯一可能性是构造函数声明.

12.1 [class.ctor] / 1描述了用于构造函数的特殊声明符语法,它只能是一个可选的函数说明符序列,后面是构造函数的类名.不和或者在构造函数的类名之前允许其他ptr-operator.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读