摘自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 构造函数被视为特殊成员函数,这似乎与标准相矛盾。
是构造函数,那不是特殊的成员函数,还是成员函数?
是的,因为构造函数
S:: S(int, float, double)
是在类S
的成员规范中声明的,并且我们有一个成员函数的成员声明。