我有一段时间没有完成C++,也无法弄清楚为什么以下不起作用:
class A {
protected:
int num;
};
class B : public A {
};
main () {
B * bclass = new B ();
bclass->num = 1;
}
Run Code Online (Sandbox Code Playgroud)
编译它会产生:
错误C2248:'A :: num':无法访问在类'A'中声明的受保护成员
派生类不应该访问受保护的成员吗?
我错过了什么?
jhu*_*ord 14
是的,派生类可以访问受保护的成员,但只能从类中访问.
例:
#include <iostream>
class A {
protected:
int num;
};
class B : public A { public:
void printNum(){
std::cout << num << std::endl;
}
};
main () {
B * bclass = new B ();
bclass->printNum();
}
Run Code Online (Sandbox Code Playgroud)
将打印出的值num,但num可以在课堂内访问B.num必须被宣布为公开才能访问它bclass->num.
| 归档时间: |
|
| 查看次数: |
34571 次 |
| 最近记录: |