社区
C++ 语言
帖子详情
关于protected标号的访问权限~~求解
grimmchen
2010-06-09 12:20:45
C++PRIMER里说:protected成员可以被派生类对象访问但不能被该类型的普通用户访问----该类型的普通用户,是不是指的基类的对象?
还有:派生类只能通过派生类对象访问其基类的protected成员,派生类对其基类类型对象的protected成员没有特殊访问权限----跟上面的好像有点矛盾,求解
...全文
84
9
打赏
收藏
关于protected标号的访问权限~~求解
C++PRIMER里说:protected成员可以被派生类对象访问但不能被该类型的普通用户访问----该类型的普通用户,是不是指的基类的对象? 还有:派生类只能通过派生类对象访问其基类的protected成员,派生类对其基类类型对象的protected成员没有特殊访问权限----跟上面的好像有点矛盾,求解
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Longerandlonger
2010-06-09
打赏
举报
回复
我是这么理解protected的,你别当真:
基类定义了protected的成员 m ,【基类的成员】可以访问 m ,但【基类的对象】不能访问 m
派生类public继承基类,则 m 成为派生类的protected成员,访问权限与基类中相同。
pengzhixi
2010-06-09
打赏
举报
回复
Drived构造函数前加public:
pengzhixi
2010-06-09
打赏
举报
回复
[Quote=引用楼主 grimmchen 的回复:]
C++PRIMER里说:protected成员可以被派生类对象访问但不能被该类型的普通用户访问----该类型的普通用户,是不是指的基类的对象?
就是说除了能被派生类成员访问外,其余的访问权限和private一样,不能被外界直接访问。
还有:派生类只能通过派生类对象访问其基类的protected成员,派生类对其基类类型对象的protected成员没有特殊访问权限----跟上面的好像有点矛盾,求解
不矛盾看例子。
[/Quote]
class Base{
protected:
int i;
public:
Base (int k=10):i(k){}
};
class Drived:public Base{
Drived(){}
void getvalue( Base&rhs)
{
cout<<i<<endl;//OK
cout<<rhs.i<<endl;//can't compile
}
};
int main()
{
Base obj(5);
Drived d;
d.getvalue(obj);
system("pause");
return 0;
}
grimmchen
2010-06-09
打赏
举报
回复
哦,那基类的protected成员能被基类自己的对象访问不,越看越糊涂了
z569362161
2010-06-09
打赏
举报
回复
一个类只可以对自身类或同类类型对象protected访问,也可以访问其派生类从基类继承的protected成员,但是不可以访问派生类自身定义的protected成员。
z569362161
2010-06-09
打赏
举报
回复
派生类不能访问另一个独立的基类对象的protected成员是有必要的,如果不是这样,就破坏了对象的封装性:一个对象的成员被另一个对象改变了,虽然是在派生类对象中修改的,而且修改的是保护成员,但仍然是另一个对象改变了它,破坏了对象数据封装。
liutengfeigo
2010-06-09
打赏
举报
回复
protected 对外表现得像pritive
对派生类表现得像public.
这么理解可以不?
liutengfeigo
2010-06-09
打赏
举报
回复
protected 专门为派生类设计的~?
liutengfeigo
2010-06-09
打赏
举报
回复
void getvalue( Base&rhs)
{
cout<<i<<endl;//OK
cout<<rhs.i<<endl;//can't compile
}
UP~!学习了
TestNG自动化测试框架 入门到实战
本课程分成4大模块: 第一模块java 基础知识:JDK安装以及环境变量配置、Java 对象和类、public+
protected
+default+private权限控制等java编程必备知识; 第二模块TestNG 自动化测试框架基础:testng 的annotations、...
面试题(1)
C++的基础数据类型分为3种:整数型、浮点型和void型 除了指针类型与long随操作系统字长变化而变化外,其他的都固定不变(32位和64相比) 表示整数、字符和布尔值的算术类型合称为整形,整形根据修饰符细分为13种形式,它们的区分主要体现在类型名、长度和表示范围几个方面。 C++常量:常量是不可改变的数据,主要分为整形常量,浮点型常量,字符型常量,字符串常量,转义字符常量(’\0nnn’),地址常
2021年上半年软件设计师考试评估解析
上午 题目:在CPU中,用( )给出将要执行的下一条指令在内存中的地址。 选项:[{"A":"程序计数器","B":"指令寄存器","C":"主存地址寄存器","D":"状态条件寄存器"}] 答案:[['A']] 解析:A选项程序计数器PC:存储下一条要执行指令的地址。本题选择A选项。B选项指令寄存器IR:存储即将执行的指令。C选项主存地址寄存器MAR:用来保存当前CPU所访问的内存单元的地址。D选项状态条件寄存器PSW:存状态标志与控制标志 。 题目:以下关于RISC和CIS...
C++Primer
1、函数由函数名以及一组操作数类型唯一地表示。2、C++语言使用调用操作符(即一对圆括号)实现函数的调用3、函数的运行以形参的(隐式)定义和初始化开始。4、在函数体内定义的变量只在该函数中可以访问,这种变量称为局部变量,只在函数运行时存在。5、函数的形参为函数提供了已命名的局部存储空间。他们之间的差别在于形参是在函数的形参表中定义的,并由调用函数时传递给函数的实参初始化。实参是一个表达式。1、类的所有成员必须在类定义的花括号里面声明。2、编译器隐式的将在类定义的成员函数当做内联函数。
BAT面试题汇总及详解(进大厂必看)03
该策略可以 大化地节省CPU资源,却对内存非常不友好。极端情况可能出现大量的过期key没有再次被访问,从而不会被清除,占用大量内存。定期过期:每隔一定的时间,会扫描一定数量的数据库的expires字典中一定数量的key,并清除其中已过期的key。该策略是前两者的一个折中方案。通过调整定 时扫描的时间间隔和每次扫描的限定耗时,可以在不同情况下使得CPU和内存资源达到 优的平衡...
C++ 语言
64,676
社区成员
250,490
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章