>백엔드 개발 >C++ >C의 내부 클래스가 상위 클래스의 개인 변수에 액세스할 수 있습니까?

C의 내부 클래스가 상위 클래스의 개인 변수에 액세스할 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-29 08:04:10234검색

Can Inner Classes in C   Access Their Parent Class's Private Variables?

개인 변수에 대한 내부 클래스 액세스

C에서 내부 클래스는 다른 클래스 내에 중첩되어 있으며 특별한 액세스 권한을 갖습니다. 질문이 생깁니다. 내부 클래스가 상위 클래스의 비공개 변수에 액세스할 수 있습니까?

대답은 '예'입니다. 내부 클래스는 본질적으로 자신이 정의된 클래스의 친구입니다. 이는 내부 클래스의 객체가 상위 클래스 객체의 비공개 멤버에 직접 액세스할 수 있음을 의미합니다.

그러나 Java와 달리 내부 클래스 객체와 내부 클래스 객체 사이에는 암시적인 상위-하위 관계가 없습니다. 상위 클래스의 객체입니다. 이 관계를 설정하려면 상위 클래스 객체를 내부 클래스의 생성자에 명시적으로 전달해야 합니다.

다음은 내부 클래스가 전용 변수에 액세스하는 것을 보여주는 코드 예제입니다.

#include <iostream>

class Outer {
private:
    int var = 4;
    static const char* const MYCONST = "myconst";

public:
    class Inner {
    public:
        Inner(Outer& parent) : parent(parent) {}
        void func() {
            std::cout << parent.var << std::endl;
        }

    private:
        Outer& parent;
    };
};

int main() {
    Outer outer;
    Outer::Inner inner(outer);
    inner.func();
    return 0;
}

여기서 예를 들어, 내부 클래스 Inner에는 상위 Outer 개체에 대한 참조를 인수로 사용하는 생성자가 있습니다. 이는 내부 클래스가 Outer 객체의 전용 변수 var에 액세스할 수 있도록 부모-자식 관계를 설정합니다.

Inner::func()가 호출되면 전용 변수 var의 값을 인쇄하여 보여줍니다. 내부 클래스는 실제로 상위 클래스의 비공개 변수에 액세스할 수 있습니다.

위 내용은 C의 내부 클래스가 상위 클래스의 개인 변수에 액세스할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.