代码之家  ›  专栏  ›  技术社区  ›  dimba

奇怪的默认构造函数语法

  •  10
  • dimba  · 技术社区  · 14 年前

    在一些遗留代码中看到了以下内容:

    class A {
        &A() { ... }
    }
    

    错误gcc无法编译它。

    1 回复  |  直到 13 年前
        1
  •  7
  •   CB Bailey    14 年前

    尽管在句法上 & 在语法中允许在这个位置(它是 这就是顺序: , & 作为一个 ptr操作员 ),在语义上它没有意义,这里不允许。从语法的角度来看,它是有效的,这可能表明为什么Visual Studio可能会接受它。

    检查可能性,这个声明看起来像一个没有返回类型的函数定义。7[dcl.dcl]/6说:“只有在构造函数、析构函数和类型转换的函数声明中 被告知“而且没有 ~ operator

    12.1[class.ctor]/1描述用于构造函数的特殊声明符语法,它只能是 函数说明符 后跟构造函数的类名。不 & 或其他 ptr操作员