2014-12-03 4 views
-2

이것은 나와 내 동료가 논의한 이론적 인 질문입니다. 나는 곧 그것을 직접 시도 할 것이지만 나는 초심자를위한 그것의 interessting 주제를 생각했다.상수 참고 번호의 수정

"VEHICLE"이라는 기본 클래스가 있고 "CAR"및 "TRUCK"... (여기서 "VEHICLE"은 인스턴스화 할 수 없음)과 같은 파생 클래스가 있다고 가정 해 봅시다.

지금까지 그렇게 좋았습니다. 이제 A : 자동차 A라는 자동차를 만듭니다.
및 B라는 이름의 const 참조 : const car & B = A;

클래스 "CAR"에 broken_door라는 함수가 있다고 가정 해 보겠습니다. 내 질문은 이제 다음과 같습니다. 으로 전화하면 A.broken_door(); B는 상수 및 참조 객체이기 때문에 B는 어떻게됩니까?

+1

'B'는 상수이고 'A'와 같은 값입니다. 사실'B'는 어떻게 될까요? 그것은 여전히 ​​_reference_입니다. –

+1

'B'는 계속해서 'A'를 참조합니다. 그것은 참조가하는 것입니다. 다른 것을 참조하십시오. – juanchopanza

답변

2

B에는 아무 것도 발생하지 않습니다. 수정 된 A을 계속 참조합니다.

constB을 사용하여 참조하는 개체를 수정할 수 없음을 의미합니다. 그것은 다른 방법으로 객체를 변경할 수 없다는 것을 의미하지 않습니다.

2

B 당신에게 동일한 개체에 다른 이름을 부여 A 단지 참조입니다 사전에 감사합니다. 마술 수정할 수 없습니다 상수 객체로 A를 설정하지 않는

const car& B = A;, 그냥 당신이 B을 통해 그것을 을 수정할 수 없음을 의미합니다.

A을 직접 수정하거나 다른 (비 const) 포인터 또는 참조를 사용하여 개체를 변경할 수 있습니다.

1

"B"와 "A"는 같은 이름의 다른 이름입니다.
차이점은 변경하려는 경우 해당 항목을 "B"로 참조 할 수 없다는 점입니다.
는 (A "CONST 참조"변경되지 않습니다 개체에 대한 참조 아니라, 변화가 금지되는 기준입니다.)

약간 결함이 비유 : 당신이로 이름 "molbdnilo"를 사용할 수 있습니다 "const reference"는 나에게 (왜냐하면 그것은 나를 가리 키기 때문에, 그러나 당신은 나를 수정할 수있는 능력이 없다).
그럼에도 불구하고, 내 stackoverflow 프로필을 변경하면, 당신이 그것을보고 변경 사항을 볼 수 있습니다.