C++ 11 표준의 단락 7.3.3.p1 및 p3은 모두 using-declaration 생성자의 이름을 참조합니다. 왜 이것이 필요한가? 아래 코드는 기본 클래스 A
의 생성자가 파생 클래스 B
에서 예상대로 표시되는 것을 보여줍니다.생성자의 이름을 지정하는 using 선언이 필요한 이유는 무엇입니까?
class A
{
int i;
public:
A() : i(0) {}
A(int i) : i(i) {}
};
class B : public A
{
public:
// using A::A;
A f1() { return A(); }
A f2() { return A(1); }
};
int main()
{
B b;
A a1 = b.f1();
A a2 = b.f2();
}
나는 아무것도 위 using A::A;
을 주석 경우는 프로그램 실행에 변경합니다. 이 경우 A(int i)
인 부모 클래스에서 기본이 아닌 생성자 상속에 대한 의미 것
부모 클래스에서 기본이 아닌 생성자 (예 :'A (int i)'를 사용하여'B '를 생성하는 것을 의미한다고 생각합니다. –
@JoeZ 여기에 사용 선언이 필요하다고 생각하지 않습니다. – Belloc
"상속하는 생성자"를 찾으십시오. – Xeo