가정하자 파라미터.생성자 다음 I 클래스가
class B{
int y ;
A obj_a ;
B(int j , A a){
y = j ;
obj_a = a ;
}
}
다음 작업을 수행 할 때 :
int main(){
A obj1(1) ; // obj.x has value 1
B obj2(2 , obj1) ;
}
제 2 라인의 형식은 A의 어떤 함수 호출을 말하는없는 오류가 발생 :: A(). 이것은 기본 스타일 생성자가 누락되었음을 의미하는 것을 알지만, 왜 이것을 필요로합니까? obj1은 정의 된 생성자를 사용하여 생성되므로 문제가되지 않습니다.
현재 내 생각으로는 A a
이고 obj_a = a
은 암시 적으로 정의 된 복사 생성자를 호출합니다.
참고 : 간결하게하기 위해 비공개, 공개 등을 제외했습니다.
후 실제 오류. 당신의 고객이 아마도'const int i'이어야한다고 불평 할 것입니다; – stark
명시 적으로 이니셜 라이저 목록을 사용하지 말 것을 요청했습니다. – kfsone