Ответ 1
С++ 11 представил делегирование конструкторов:
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 A {
public:
A(std::string str) : m_str(str) {}
A(int i) { *this = std::move(A(std::to_string(i))); }
std::string m_str;
};
Приведенный выше код работает, но я боюсь, что вызов этого в конструкторе может привести к поведению undefined.
Если это возможно, вы можете объяснить, почему, а также предложить лучшую альтернативу?
С++ 11 представил делегирование конструкторов:
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
};