C++学习笔记43——protected访问标识符
来源:互联网 发布:java 选择语句 编辑:程序博客网 时间:2024/04/29 18:44
1,访问标识符汇总
定义在protected标号之后的成员可以被类成员(成员函数)、友元、和派生类成员访问。类的普通用户不能访问protected成员。
2,继承与保护
难点在于这一句话:
派生类只能通过派生类对象访问基类的protected成员,派生类对其基类类型对象的protected成员没有特殊访问权限。
自己的理解:
1,假设基类father中有一个protected成员叫test,不管是数据成员还是函数成员,由于继承,其派生类son获得了一个一样的protected成员test;
2,一个类,只有在其成员函数的定义体中才能使用自己的protected成员,用户代码中无法使用;
3,所以,在基类father的成员函数定义中可以使用基类的protected成员;
4,同样,在派生类son的成员函数定义体中可以使用son的protected成员,这个成员可能是继承自father类的;
5,但是,在派生类son的成员函数定义体中不能通过引入一个father类的对象来使用father类的protected成员;
例子如下:
/*******************************************************************/// protected/*******************************************************************/class apple{public:apple(string col, double wei) :color(col), weight(wei) {};public :string color;protected:double weight;};class Father{protected:void test() { printf("Father:test()\n"); }};class Son : public Father{public:void bTest() { //用的是从父类继承而来的,自己的protected成员test(); //protected成员在此处可用 this->test();} //错误的成员函数定义//void bTest_new(Father& f)//{////用的是父类的protected成员//f.test(); ////error C2248: “Father::test”: 无法访问 protected 成员(在“Father”类中声明)//}};//mainint main(){//1, 在用户代码中不可见apple fushi("red", 50);cout << fushi.color << endl;//cout << fushi.weight << endl;// error C2248 : “apple::weight” : 无法访问 protected 成员(在“apple”类中声明)//2, 在子类的成员函数中Father f;Son s;//f.test(); //error C2248: “Father::test”: 无法访问 protected 成员(在“Father”类中声明)//s.test(); //error C2248: “Father::test”: 无法访问 protected 成员(在“Father”类中声明)s.bTest(); //bTest为public}
0 0
- C++学习笔记43——protected访问标识符
- javaSE学习笔记5——访问控制权限private、default、protected、public
- c——标识符
- c++_public,protected,private访问
- Java学习笔记(二)——标识符、关键字
- (01)java学习笔记——关键字/标识符/常…
- java学习笔记 --protected
- NDK开发学习笔记—C/C++访问java成员
- C语言——标识符
- 【学习笔记】选择标识符
- 《C语言宝典》学习笔记(四):关键字和标识符
- C语言学习笔记1-数据类型和标识符
- C#public、 protected、private、internal、protected internal访问修饰符
- C++(笔记)浅谈protected
- C++_public,protected,private访问权限
- c++学习笔记--protected成员
- C++学习笔记10,访问控制符public,protected,private(一)
- Java学习笔记(1):访问修饰符protected和default的区别
- 4 Maven-坐标
- cocos studio 2.3支持骨骼动画编辑
- 简单定制Android控件(3) - 打造通用的PopupWindow(四)
- BZOJ 4003
- 座机与手机号的正则验证
- C++学习笔记43——protected访问标识符
- MaterialDesign主题大全
- python数字图像处理(5):图像的绘制
- UVA11572 Unique Snowflakes(滑窗)
- MacBook开发程序的配置问题
- centos7中mysql(mariadb)安装和启动
- ORA-00257: archiver error. Connect internal only, until freed
- Eclipse设置背景与字体大小
- python数字图像处理(6):图像的批量处理