2014-10-28 4 views
1

나는 복잡한 클래스가 메인 뭔가 이것이다 : 나는 일이 모든 문을 위해 복잡한 클래스에서 필요로하거나 것이 무엇 생성자초기화, 복사 생성자와 할당

int main() 
{ 
complex c1; 
complex c2=c1; 
complex c3(c1); 
complex c4; 
c4=c1; 
} 

? 그리고는 오버로드 된 할당 또는 복사 생성자는 다음에 사용됩니다

complex c2=c1; 
complex c3(c1); 

답변

3
complex c1; 

기본 C-토르를.

complex c2=c1; 

카터.

complex c3(c1); 

카터.

complex c4; 

디폴트 콜터.

c4=c1; 

할당 연산자.

다른 생성자가 정의되어 있지 않거나 매개 변수없이 생성자를 정의 할 수있는 경우 기본 생성자는 컴파일러에 의해 정의됩니다.

복사 생성자 및 할당 연산자는 정의하지 않은 경우 컴파일러에 의해 정의됩니다.

질문과 주제에 대한 자세한 내용에 대한 꽤 좋은 일치하는 대답이 주어진다
+0

할당 연산자가 c2에 액세스 할 수 있는지 또는 "complex c5 = complex()"에만 해당해야합니까? –

+0

@cnd의 경우에만 @endre. 귀하의 예제와 c5 복사 생성자입니다. – ForEveR

1
새로운 개체가 기존 개체에서 생성 될 때

복사 생성자의 사본으로,라고 기존 객체. 대입 연산자는 이미 초기화 된 객체에 다른 기존 객체의 새 값이 할당 될 때 호출됩니다.

c4 = c1; // calls assignment operator, same as "c4.operator=(c1);" 
complex c2 = c1; // calls copy constructor, same as "complex c2(c1);"