在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。