C++ Struct繼承如何解決訪問權(quán)限問題

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

在C++中,struct是一種特殊的class,可以用來定義數(shù)據(jù)結(jié)構(gòu)。在struct中可以使用訪問權(quán)限修飾符來控制成員變量和成員函數(shù)的訪問權(quán)限,包括public、protected和private。繼承struct時(shí),子類會(huì)繼承父類的所有成員變量和成員函數(shù),但是訪問權(quán)限需要根據(jù)繼承關(guān)系和訪問權(quán)限修飾符來確定。

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

下面是一個(gè)簡(jiǎn)單的示例來說明C++ struct繼承的訪問權(quán)限問題:

#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函數(shù)來間接訪問protectedVar。

0