2014-09-02 6 views
0

일단 참조가 객체에 초기화되면 다른 객체를 참조 할 수 없다는 것을 알게되었습니다. 직접 해보고 싶었습니다. 이것이 내가 시도한 것입니다 :C++ 참조가 다른 객체를 참조 할 수 있습니까?

struct X 
{ 
    int s; 
}; 

int main() 
{ 
    X x1; 
    X x2; 

    X& xRef = x1; 
    xRef = x2; 

    X* xPtr = &x1; 
    xPtr = &x2; 
} 

이 코드는 문제없이 컴파일됩니다. 왜 그럴까요? 내가 놓친 게 있니?

답변

3

유효한 C++이기 때문에 컴파일됩니다. 생각했던대로 작동하지 않습니다.

x1 = x2; 

xRef 때문에 당신이 실제로 x1x2의 값을 할당하는 x1에 대한 참조는 다음과 같습니다

xRef = x2; 

이 줄은 정확히 같은 일을. 예를 들어

:

int a = 5; 
int b = 6; 

int & a_ref = a; 
a_ref = b; 

b = 7; 

std::cout << "a:" << a << " b:" << b << std::endl; 

이것은 a의 값이 6 b (선간 a_ref = b;에)임을 표시한다 7.

가 가

는 C++ 언어에 의한 임의의 메커니즘을 포함하지 않는 것이다 참조를 다시 바인딩 할 수 있습니다. 일단 바운드되면 참조는 오직 같은 대상을 참조하며이 으로 바꿀 수 없습니다.

+0

이제는 이해합니다. 감사. – Aaron

관련 문제