|
1. 이것은 함수에 대한 대입의 문제가 아니다.
2. 함수 자체의 문제가 아니라 함수가 리턴하는 변수의 문제이다.
3. 참조를 리턴하지 않는 함수는 임시변수를 생성하고 그 함수에 대입하는 것은 임시변수에 대입하는 결과가 된다.
그러나 이경우 대입은 함수의 값을 받을 좌변이 없스므로 어떠한 효력이 없다.
4. 참조를 리턴할 경우에는 함수에 대입하는 것은 참조가 참조하는 변수에 대입하므로 임시객체가 아닌 특정 변수의 값을 변경한다.
그러므로 함수에 대입할 경우 함수의 원형은 참조를 리턴하여야만 한다.
김영일 님이 쓰신 글 :
: C++ 기초플러스 3판에 보면 함수에 값을 대입하는 것이 있는데 어떻게 하여야 하나요?
:
: 책에 의하면
: 배열 클래스인 ArrayDb 클래스를 마치 배열처럼 이용하려는 것인데
:
: //클래스 선언부
: class ArrayDb
: {
: private:
: unsigned int size;
: double * arr;
: public:
: ---중략
: virtual double & operator[](int i);
: virtual const double & operator[](int i) const;
: --중략
: };
:
: //클래스 구현
: --중략
: double & ArrayDb::operator[](int i)
: {
: return arr[i];
: }
:
: //클라이언트에서 배열 클래스 사용
:
: ArrayDb scores(5,2.0);
:
: cout << scores[1] << endl;
:
: scores[i] = 0.5; //이 부분이 함수(operator[](int i))에 대입하는 문인데
: 이해가 안가는 군요
:
: operator[](int i)함수는 리턴하게 되어있는데 어떻게 값을 함수에 대입하는지........
:
:
:
:
:
:
:
:
|