溫馨提示×

C++ Struct繼承如何解決訪問權限問題

c++
小樊
135
2024-07-21 09:19:01
欄目: 編程語言

在C++中,struct是一種特殊的class,可以用來定義數據結構。在struct中可以使用訪問權限修飾符來控制成員變量和成員函數的訪問權限,包括public、protected和private。繼承struct時,子類會繼承父類的所有成員變量和成員函數,但是訪問權限需要根據繼承關系和訪問權限修飾符來確定。

如果一個struct繼承另一個struct,子類可以訪問父類中的public和protected成員,但不能訪問私有成員。如果父類的成員變量或成員函數是private的,則子類不能直接訪問,但可以通過公有的成員函數來訪問私有成員。

下面是一個簡單的示例來說明C++ struct繼承的訪問權限問題:

#include <iostream>
using namespace std;

struct Parent {
    public:
        int publicVar;
    protected:
        int protectedVar;
    private:
        int privateVar;
};

struct Child : public Parent {
    void accessParent() {
        cout << "Public variable in Parent: " << publicVar << endl;
        cout << "Protected variable in Parent: " << protectedVar << endl;
        // cout << "Private variable in Parent: " << privateVar << endl; // Error: privateVar is private in Parent
    }
};

int main() {
    Child child;
    child.publicVar = 10;
    // child.protectedVar = 20; // Error: protectedVar is protected in Parent
    // child.privateVar = 30; // Error: privateVar is private in Parent

    child.accessParent();

    return 0;
}

在上面的示例中,Child類繼承自Parent類,可以直接訪問Parent類中的public成員變量publicVar,但無法直接訪問protectedVar和privateVar??梢酝ㄟ^accessParent函數來間接訪問protectedVar。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女