C++ :: 的用法小结
来源:互联网 发布:知乎大学生店铺淘宝 编辑:程序博客网 时间:2024/06/06 15:04
:: 的用法小结:
用于将类内声明的静态数据成员在类外初始化;
用于将类内声明的函数成员在类外实现;
用于捞出继承时访问权限被改变的成员,使之还原为原来的权限;
继承时派生类新增了与基类同名的成员,由于同名屏蔽,从而使基类的成员被遮蔽,可用: :将被遮蔽的基类成员重见天日;
用于在类外或子类中访问不继承的静态成员;
用于区分不同名空间的标识符。
:: 的作用之一:恢复访问权
#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指针的用法小结
- C语言中static的用法小结
- C中Static的用法小结
- Extern “C” 用法小结
- C++/CLI用法小结
- c++typedef用法小结
- C语言宏的一些常规用法小结
- C语言static用法小结
- C语言static用法小结
- C语言static用法小结
- C里Static用法小结
- c / c++ const 用法小结
- C/C++ typedef 用法小结
- c语言 const用法小结
- const的用法小结
- keep的用法小结
- typedef的用法小结
- CToolBar 的用法小结
- 智能指针
- Android[中级教程]第四章 单元测试AndroidTestCase
- 【DMA模式2联想到的磁盘坏道】终于CHKDSK解决了!
- Flex的事件(一)
- 深入理解Flash的沙箱 – Application Domains
- C++ :: 的用法小结
- SharpZipLib Zip操作类库 压缩解压
- 通过COM技术实现Windows Shell编程
- mac 苹果如何才能实现剪切文件
- 20111004 &大前沿
- Activity的生命周期
- 由C语言指针想到的
- C++ 局部类、内嵌类和抽象类
- poj 1953 World Cup Noise