C++ 中有方便的构造函数吗?
Is there a convenience constructor in C++?
重载的构造函数是否有可能以某种方式调用 class 中的另一个构造函数,类似于下面的代码?
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 引入delegating constructors:
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
};
重载的构造函数是否有可能以某种方式调用 class 中的另一个构造函数,类似于下面的代码?
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 引入delegating constructors:
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
};