温馨提示×

C++ Struct继承如何解决访问权限问题

c++
小樊
101
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