두 클래스, Base
및 Child
이 있다고 가정 해 봅시다. Child
은 Base
을 상속합니다. Value
은 Base
에 정의 된 상수 변수 (또는 enum 값)이므로 Base::Value
으로 액세스 할 수 있습니다.기본 클래스 또는 하위 클래스를 사용하여 기본 클래스에 정의 된 enum 값/상수에 액세스해야합니까?
이제 우리는 Child
유형의 일부 변수를 다루고 있습니다. 대부분의 문서 및 샘플 코드에서 사람들은 Child
인스턴스를 처리하지만 Child::Value
대신 Base::Value
을 사용하는 경향이 있습니다. 예를 들어, Qt 라이브러리에는 QIODevice
과 QBuffer
(나중에는 이전의 자식입니다)이고 QBuffer
은 open
메서드를 가지고 있습니다. 문서는 buffer.open(QBuffer::ReadWrite, ...);
대신에 buffer.open(QIODevice::ReadWrite, ...);
과 같은 것을 사용하는 경향이 있습니다. 여러분 모두가 자주 보았다고 생각하는 많은 다른 예가 있습니다.
사람들이 왜 그 값에 액세스하는 데 기본 클래스를 사용하는지 궁금해합니다. 때로는 어떤 클래스가 정의 된 값인지 확실하지 않을 수 있으며 더 중요한 것은 자식 클래스는 기본 클래스에 정의 된 값을 무시할 수 있습니다. 현재 클래스 (WhateverClassBeingUsed::Value
)를 통해 상수 값에 액세스하는 것이 가장 좋지 않습니까? 사람들은 때때로 우리가 클래스 값을 정의하고, 더 중요한 것은, 그것이 인 확실히 알 수 없기 때문에, 그 변수에 접근하기 위해 기본 클래스를 사용하는 경향이 왜
파생 된 이름이 기본 이름을 숨기므로 [컴파일] (http://coliru.stacked-crooked.com/a/ecd55fb76fd6a91b) 않습니다. 그러나 그렇습니다, 그것은 끔찍합니다. –
@ T.C .: 다른 기능으로 전달하는 부분을 잊어 버렸습니다. [작동하지 않음] (http://coliru.stacked-crooked.com/a/dc16484c422657a3). – Puppy
이름이 변경 되었습니까? : -S –