Is there a convenience constructor in C++?
本问题已经有最佳答案,请猛点这里访问。
重载构造函数是否可能以某种方式调用类中的另一个构造函数,类似于下面的代码?
1 2 3 4 5 6 7 | class A { public: A(std::string str) : m_str(str) {} A(int i) { *this = std::move(A(std::to_string(i))); } std::string m_str; }; |
上面的代码可以工作,但我担心在构造函数中调用它可能会导致未定义的行为。
如果是这样,你能解释一下原因并提出一个更好的选择吗?
C++ 11引入委托构造函数:
1 2 3 4 5 6 7 | class A { public: std::string m_str; A(std::string str) : m_str(str) {} // target constructor A(int i) : A(std::to_string(i)) {} // delegating constructor }; |