我有一个这样的课:
class A{ private: init(const std::string& s=""){/*do something*/} public: A(){init();} A(const A&){init();} A(const std::string& s){init(s);} };
它是否涵盖了可能被称为构造函数的所有形式?
我要做的是,任何对象创建必须首先调用该init()
函数,即我需要定义可以隐式或显式调用的所有构造函数.
A(const A&)
一旦定义A(A const&)
了编译器,就不会合成任何其他构造函数.唯一可调用的构造函数将是您声明的构造函数.
A(A&&)
作为旁白,情况也是如此.