首頁 >後端開發 >C++ >C 中的內部類別可以存取其父類別的私有變數嗎?

C 中的內部類別可以存取其父類別的私有變數嗎?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-29 08:04:10235瀏覽

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 物件的引用作為參數。這就建立了父子關係,允許內部類別存取外部物件的私有變數var。

當調用Inner::func()時,它會列印私有變數var的值,並示範內部類別確實可以存取其父類別的私有變數。

以上是C 中的內部類別可以存取其父類別的私有變數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn