C++ :: 的用法小结
原文:http://blog.csdn.net/whz_zb/article/details/6843369
:: 的用法小结:
用于将类内声明的静态数据成员在类外初始化;
用于将类内声明的函数成员在类外实现;
用于捞出继承时访问权限被改变的成员,使之还原为原来的权限;
继承时派生类新增了与基类同名的成员,由于同名屏蔽,从而使基类的成员被遮蔽,可用: :将被遮蔽的基类成员重见天日;
用于在类外或子类中访问不继承的静态成员;
用于区分不同名空间的标识符。
:: 的作用之一:恢复访问权
- #include <iostream>
- using namespace std;
- class A
- {
- public:
- A(int xx = 1,int yy = 2){X=xx;Y=yy;}
- int get_XY(){return X*Y;}
- void put_XY(){cout << X << "*" << Y <<"="<< X*Y <<endl;}
- protected:
- int X,Y;
- };
- class B:private A
- {
- public:
- B(int s,int xx,int yy):A(xx,yy),S(s){}
- //A::put_XY;
- A:: get_XY;
- void make_S(){put_XY();cout<<S<<endl;}
- private:
- int S;
- };
- void main()
- {
- B b(3,5,6);
- b.get_XY();
- //b.put_XY(); 还是private权限,不可以在类外被访问。
- b.make_S();
- }
注意:
恢复时不可带类型名;( int A::get_XY(); 错)
只能恢复不可提升或降低访问权限;
当父类被恢复的函数重载时,将全都恢复;
父类中不同访问域的重载函数不能恢复;
若子类新增了与父类同名的成员,则父类同名的成员不可恢复。
:: 的作用之二:隐藏再现
- #include <iostream>
- using namespace std;
- class A
- {
- public:
- int X,Y;
- };
- class B:public A
- {
- public:
- int Y,Z;
- };
- void main()
- {
- B b;
- b.X= 1;
- b.Y= 2;
- b.A::Y= 3;
- b.Z= 4;
- }
:: 的作用之三:隐藏再现
- #include <iostream>
- using namespace std;
- class A
- {
- public:
- static int i;
- static void Add() { i++; }
- void out() { cout<<"static i = "<<i<<endl; }
- };
- int A::i= 10;
- class B:private A
- {
- public:
- A::out;
- };
- class C:public B
- {
- public:
- void f();
- };
- void C::f()
- {
- //私有继承,化公为私
- //i = 50; // 错
- //Add() ; // 错
- A:: i = 50;
- A:: Add();
- }
- void main()
- {
- A x;
- C y;
- x.Add();
- x.out();
- y.f();
- y.out();
- cout<< "static i = "<<A::i<<endl;
- };
C++ :: 的用法小结相关推荐
- oracle @spool,Oracle spool 用法小结
Oracle spool 用法小结 转自:http://wallimn.javaeye.com/blog/472182 对于SPOOL 数据的SQL,最好要自己定义格式,以方便程序直接导入,SQL语句 ...
- js push(),pop(),unshift(),shift()的用法小结
js中push(),pop(),unshift(),shift()的用法小结 1.push().pop()和unshift().shift() 这两组同为对数组的操作,并且会改变数组的本身的长度及内容 ...
- Java中getResourceAsStream的用法小结
2019独角兽企业重金招聘Python工程师标准>>> Java中getResourceAsStream的用法小结 一.Java中的getResourceAsStream主要有以下三 ...
- setscale方法的用法_基于BigDecimal.setScale的用法小结
1. BigDecimal num1 = new BigDecimal(2.225667);//这种写法不允许,会造成精度损失 2. BigDecimal num2 = new BigDecimal( ...
- java.nio.ByteBuffer用法小结
转载自 java.nio.ByteBuffer用法小结 在NIO中,数据的读写操作始终是与缓冲区相关联的.读取时信道(SocketChannel)将数据读入缓冲区,写入时首先要将发送的数据按顺序填入 ...
- jsoup解析HTML用法小结
转载自 jsoup解析HTML用法小结 使用HttpClient+jsoup做采集器有一段时间了,发现jsoup很好用,而且还有很多方便的东西都没怎么用上.于是想根据官网上的cookbook来对j ...
- [转]ssh常用用法小结
ssh常用用法小结 1.连接到远程主机: 命令格式 : ssh name@remoteserver 或者 ssh remoteserver -l name 说明:以上两种方式都可以远程登录到远程主机, ...
- Linux: chmod 和 chown用法小结
chmod chmod指令是更改文件读写执行权限的. 文件权限可以通过ls -a或ll来看,在每个文件前有10个字符,第一个是d是文件夹,否则为一划.后面三组rwx,分别是读取,写入和执行的权限; 三 ...
- c++指针各种用法小结
指针各种用法小结 1.int*p; 一般指针. 2.int (*p)[M]; p指向含有M个元素的一维数组,可指向每行含有M个元素的二维数组的一行(行指针). 3.int * p[M]; p是指针数组 ...
最新文章
- 中国AI科研产出全球第一 但引文影响力低
- Cisco Easy ***综合配置示例
- python推荐系统-不到40行代码用Python实现一个简单的推荐系统
- DeepID2+:Deeply Learned Attributes for Crowded Scene Understanding
- 潭州Java中级班(day_04)
- AUTOSAR从入门到精通100讲(四十八)-Lin通信协议栈分析两步走-LinTrcvLIN Driver
- 武汉计算机应用中职学校,武汉市中职学校计算机应用基础课程抽考.Doc
- 基于PyQt的扫雷游戏实现_下篇
- BDD敏捷开发入门与实战
- 虚拟桌面的备份恢复最佳实践 第二部分
- 语言速算24点的小窍门_2-3岁宝宝是语言发育引导期,对话式朗读促进表达,3招养出演讲家...
- python modbus tk 库_python modbus_tk模块学习笔记(rtu slaver例程)
- 开源视频平台:ViMP
- windows上搭建NFS服务器--haneWIN,Linux客户端挂载
- 基于java的超市管理系统设计(含源文件)
- electron app 模块说明
- R语言方差分析ANOVA
- HTML登录注册页面简单实现
- 基于51单片机的扫地小车,扫地机器人设计 主要功能有寻迹避障,来回清扫功能,往返清扫功能
- 02- pandas 数据库 (数据库)
热门文章
- 什么是机器人的五点校正法_样品定量检测怎样选择内标法和外标法!
- NeHe教程Qt实现——lesson10
- python struct
- ios开发判断字符串为空_【开发常识】这个问题,直接导致年终奖没了……(惨兮兮)...
- 3 账套升级u8_用友U8条码管理的应用对仓库有什么好处?
- rsa php前面,PHP使用非对称加密算法(RSA)
- 泉州服务器维修,泉州云服务器
- php如何检测数组是否存在,php – 如何检查数组元素是否存在?
- jq的form data中保留加号_使用Fourier+EMD水管中传播的单频音波进行滤波(Python)...
- c语言关于office运行库,VC++运行库32/64位合集下载|微软常用运行库合集(2015- 2021版)...