2014-11-08 1 views
0

나는 오버로드 연산자를 배우려고 노력 그리고 난 같은 코드 발견 :연산자 오버로딩 메서드에서 반환 된 개체를 초기화하지 않는 이유는 무엇입니까?

public static ComplexNumber operator -(ComplexNumber x) { 
    ComplexNumber y; 
    y.re = -x.re; 
    y.im = -x.im; 
    return y; 
} 

을 우리는이 같은 y 초기화하지 않는 이유를 궁금해 : ComplexNumber y = new ComplexNumber()합니다.

+2

그것은 아마도'struct'입니다. 유형 정의가 있습니까? –

+0

네, 맞습니다. ... – user3616181

답변

2

내가 의견에서 말했듯이 : 아마 (실제로는 확실히) struct 일 것입니다.

예를 this snippet를 참조하십시오 :

당신이 New 연산자를 사용하여 구조체 개체를 생성하면 생성됩니다 적절한 생성자가 호출됩니다. 클래스와 달리 구조체는 New 연산자를 사용하지 않고 인스턴스화 할 수 있습니다. New을 사용하지 않으면 필드가 할당되지 않은 상태로 유지되고 모든 필드가 초기화 될 때까지 개체를 사용할 수 없습니다.

당신은 쉽게 자신을 위해이를 테스트 할 수 있습니다

void Main() 
{ 
    X x; 
    x.blabla = 5; 
    Console.WriteLine (x.blabla); 
} 

public struct X { 
    public int blabla; 
} 
+0

그래, 네가 맞다. 나는 우리가 그것을 할 수 있는지 몰랐다. 감사 – user3616181