是构造函数,那不是特殊的成员函数,还是成员函数?

问题描述 投票:0回答:1

摘自C++标准工作草案:

默认构造函数 ([class.default.ctor])、复制构造函数、移动构造函数 ([class.copy.ctor])、复制赋值运算符、移动赋值运算符 ([class.copy.assign]) 和预期析构函数 ([ class.dtor]) 是特殊成员函数。

https://eel.is/c++draft/special

给出以下代码:

struct S {
    S(int, float, double);
};

以我的理解,

S
的构造函数不是特殊的成员函数,因为它既不是默认构造函数,复制构造函数,也不是移动构造函数。

我想知道标准是否仍然认为构造函数等成员函数(或“唯一”的东西)。

我阅读了C++工作草案中有关成员函数、特殊成员函数和构造函数的部分,但没有找到任何合理的答案来回答这个问题。我还查看了 StackOverflow,但大多数答案都指出 all 构造函数被视为特殊成员函数,这似乎与标准相矛盾。

c++ constructor language-lawyer member-functions
1个回答
0
投票

是构造函数,那不是特殊的成员函数,还是成员函数?

是的,因为构造函数

S:: S(int, float, double)
是在类S
成员规范
中声明的,并且我们有一个成员函数的成员声明。

© www.soinside.com 2019 - 2024. All rights reserved.