gpt4 book ai didi

c++ - C++ 标准是否允许使用 typedef 重命名构造函数?

转载 作者:可可西里 更新时间:2023-11-01 15:58:27 24 4
gpt4 key购买 nike

我惊讶地发现在 VC++ 10 中,您可以使用 typedef 来更改类的构造函数的名称:

#include <iostream>

using namespace std;

class A
{
private:
typedef A alias;

public:
alias() { cout << "A ctor" << endl; }
};

int main()
{
A(); // prints "A ctor"
return 0;
}

这是标准 C++ 还是 Microsoft 扩展?

最佳答案

没有;构造函数没有名字。您不能获取构造函数的地址或传递函数指针,甚至不能像普通函数一样调用它。语法 A::A() 只是一种特殊的声明符语法,允许您声明和定义构造函数,但它不是名称

就是说,无论如何,您不能对对象(包括函数指针)进行类型定义,只能类型

要评论 MSVC 行为,我引用 12.1/3:

A typedef-name shall not be used [...] for a constructor declaration.

关于c++ - C++ 标准是否允许使用 typedef 重命名构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8722168/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com