结论
关键字 | 访问权限 |
---|---|
public | 公共权限: 类内可以访问, 类外可以访问 |
private | 私有权限: 类内可以访问, 类外不可以访问(包括在子类内也不可以访问) |
protected | 保护权限: 类内可以访问, 类外不可以访问(但在子类内可以访问) |
代码
1.看是否都能在类内进行访问,类外能否进行访问
#include <iostream>
using namespace std;
class Test {
public:
int publicMember;
Test(int pub, int pro, int pri) {
this->publicMember = pub;
this->protectedMember = pro;
this->privateMember = pri;
}
void showPublicMember() {
cout << "public member:" << this->publicMember << endl;
}
void showProtectedMember() {
cout << "protected member:" << this->protectedMember << endl;
}
void showPrivateMember() {
cout << "private member:" << this->privateMember << endl;
}
private:
int privateMember;
protected:
int protectedMember;
};
int main() {
Test test(1, 2, 3);
cout << "public member:" << test.publicMember << endl;
test.showPublicMember();
test.showProtectedMember();
test.showPrivateMember();
return 0;
}
结果如图:
可以看到,三个关键字public、protected、private声明的属性在类里面都可以使用,并且public关键字声明的属性在类外面也是可以访问的。并且如果我们将此处的protected和private关键字对应的属性放到类外面进行访问,发现是无法访问的。如下图所示。
2.看protected和private关键字是否能在子类中进行访问
那么现在还剩protected和private关键字是否能在子类中进行访问的问题了。
所以接下来写了一个Test的派生类,在派生类中直接访问三个关键字对应的属性,看能否访问成功。
可以看到除了private关键字下声明的成员privateMember不能在子类中访问以外,其它两个成员都是可以在子类中进行访问的。
这样的话就得到了文章开始的结论了,三个关键字对应的访问权限问题。
版权声明:本文为qq_43847153原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。