> 백엔드 개발 > C++ > 동일한 클래스의 C 객체가 서로의 전용 멤버 변수에 어떻게 액세스할 수 있습니까?

동일한 클래스의 C 객체가 서로의 전용 멤버 변수에 어떻게 액세스할 수 있습니까?

Susan Sarandon
풀어 주다: 2024-12-31 07:59:10
원래의
401명이 탐색했습니다.

How Can C   Objects of the Same Class Access Each Other's Private Member Variables?

같은 클래스의 객체가 서로의 프라이빗 데이터에 액세스할 수 있는 이유는 무엇인가요?

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의 액세스 제어가 다음 규칙을 기반으로 하기 때문에 가능합니다.

  • 공개 회원은 어디서나 액세스할 수 있습니다.
  • 비공개 회원은 해당 그룹 내에서만 액세스할 수 있습니다. class.
  • 보호된 멤버는 클래스 내부 및 파생 클래스에서 액세스할 수 있습니다.

mData는 비공개 멤버이므로 TrivialClass 클래스 내에서만 액세스할 수 있어야 합니다. 그러나 액세스 제어는 클래스별로 이루어지기 때문에 동일한 클래스의 개체는 여전히 서로의 전용 멤버에 액세스할 수 있습니다.

이 동작은 모든 프로그래밍 언어에 존재하지 않습니다. Java와 같은 일부 언어에는 진정한 객체별 액세스 제어 기능이 있습니다. 즉, 동일한 클래스의 객체는 서로의 개인 데이터에 액세스할 수 없습니다.

위 내용은 동일한 클래스의 C 객체가 서로의 전용 멤버 변수에 어떻게 액세스할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿