|
안녕하세요?
학교에서 고급프로그래밍이라는 수업을 듣고 있는데요..
책에 보니 이런 내용이 있네요..
소제목은
클래스 객체에서 값에 의한 전달과 반환을 금지
소스는 다음과 같습니다.
class C {
public:
C();
private:
C(C&);
};
void f(C); // 값에 의한 호출
C g(); // 값에 의한 반환
int main()
{
C c1, c2;
f(c1); // Error : C(C&)가 private임
c2 = g() // Error : C(C&)가 private임
...
}
void f(C cObj) {/****/}
c g() {/****/}
실제로 해보니 같은 에러가 나네요..
도대체 이유를 모르겠습니다.
교수님도 에러가 없는 것 같다면서 못 본걸로 하고 넘어가자고 하셨습니다.. ^^;
저도 그렇게 대답했구요..
책의 설명은 C의 복사 생성자 선언이 클래스 선언의 private에 위치한다. 따라서 main에서 f를 호출할 때, c1의 값으로 전달하려 하였으므로 오류가 발생한다.
클래스를 인자로 쓸 때는 레퍼런스로 넘기나요?
이런 말은 본 적이 없는데...
명쾌한 답변 부탁드리겠습니다...
|