2016-08-30 2 views
-2

프로그램의 다음과 같은 부분을 고려 예상 제공하지 않습니다 : 나는 그것을 실행하면 출력이C++ OOP 프로그램은 결과

class cls 
{ 
    int vi; 
public: 
    cls(int v=37) 
    { 
     vi=v; 
    } 
    friend int& f(cls); 
}; 

int& f(cls c) 
{ 
    return c.vi; 
} 

int main() 
{ 
    const cls d(15); 
    f(d)=8; 
    cout<<f(d); 
    return 0; 
} 

입니다

15

하지만 돈 이유는 모르겠다. 왜냐하면 왜 15라고 생각했기 때문이다. 왜냐하면 나는 8을 ​​출력해야한다고 생각했기 때문이다.

F (D) = 물어 그럼 내가 이해하는 것은 c.vi = 8,하지만 내가 잘못 될 수 있으며 기능은 아마 완전히 다른 작업을 수행하게에서 8

기능은, 무엇이다 목적 또는 무엇입니까?

친구 int & f (cls);

기능합니까?

+0

@gsamaras 내가 더 구체적으로 편집했습니다. –

답변

3

프로그램에 정의되지 않은 동작이 있습니다. 함수의 로컬 변수에 매달린 참조를 반환합니다 (인수도 로컬 변수 임).