같은 클래스의 객체가 서로의 프라이빗 데이터에 액세스할 수 있는 이유는 무엇인가요?
C에서는 같은 클래스의 객체가 서로의 프라이빗 데이터에 액세스할 수 있습니다. 액세스 제어는 객체별이 아닌 클래스별로 작동하기 때문입니다. 이는 비공개 데이터가 클래스 외부의 개체에만 액세스할 수 없음을 의미합니다.
예를 들어 다음 코드를 고려해보세요.
class TrivialClass { public: TrivialClass(const std::string& data) : mData(data) {} const std::string& getData(const TrivialClass& rhs) const { return rhs.mData; } private: std::string mData; }; int main() { TrivialClass a("fish"); TrivialClass b("heads"); std::cout << "b via a = " << a.getData(b) << std::endl; return 0; }
이 코드에서 TrivialClass에는 비공개 멤버 변수 mData가 있고 mData에 대한 참조를 반환하는 공개 멤버 함수 getData. 객체 a와 b가 생성되면 둘 다 getData 함수를 통해 서로의 개인 데이터에 액세스할 수 있습니다.
이는 C의 액세스 제어가 다음 규칙을 기반으로 하기 때문에 가능합니다.
mData는 비공개 멤버이므로 TrivialClass 클래스 내에서만 액세스할 수 있어야 합니다. 그러나 액세스 제어는 클래스별로 이루어지기 때문에 동일한 클래스의 개체는 여전히 서로의 전용 멤버에 액세스할 수 있습니다.
이 동작은 모든 프로그래밍 언어에 존재하지 않습니다. Java와 같은 일부 언어에는 진정한 객체별 액세스 제어 기능이 있습니다. 즉, 동일한 클래스의 객체는 서로의 개인 데이터에 액세스할 수 없습니다.
위 내용은 동일한 클래스의 C 객체가 서로의 전용 멤버 변수에 어떻게 액세스할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!