오버로드 된 생성자가 어떻게 든 클래스 내의 다른 생성자를 호출 할 수 있습니까? 아래 코드와 유사합니까?C++에 편리한 생성자가 있습니까?
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;
};
위의 코드는 작동하지만 아직 생성자에서이를 호출하면 정의되지 않은 동작이 발생할 수 있습니다.
왜 그런지 설명하고 더 나은 대안을 제안 할 수 있습니까?
당신이 찾고있는 용어는 "위임 생성자"입니다. – nwp
왜'A (int i) : m_str (std :: to_string (i)) {}'인가? – CoryKramer
이것은 최소한의 예입니다. 나는 7 개의 매개 변수를 받아들이는 생성자를 오버로드하고 싶습니다. 그 중 4 개는 기본값을 가지며 두 개 이상의 장소에서 기본값을 명시 적으로 설정하지 않으려합니다. – Makaronodentro