详解C++ 共享数据保护机制
下面随笔说明C++共享数据保护机制。
共享数据的保护
对于既需要共享、又需要防止改变的数据应该声明为常类型(用const进行修饰)。
对于不改变对象状态的成员函数应该声明为常函数。
(1)常类型
①常对象:必须进行初始化,不能被更新。
const类名对象名
②常成员
用const进行修饰的类成员:常数据成员和常函数成员
③常引用:被引用的对象不能被更新。
const 类型说明符 &引用名
④常数组:数组元素不能被更新(详见第6章)。
类型说明符 const 数组名[大小]...
⑤常指针:指向常量的指针(详见第6章)。
(2)常对象
用const修饰的对象
例: classA { public: A(inti,intj){x=i;y=j;} ... private: intx,y; }; Aconsta(3,4);//a是常对象,不能被更新
(3)常成员
用const修饰的对象成员
①常成员函数
使用const关键字说明的函数。
常成员函数不更新对象的数据成员。
常成员函数说明格式:
类型说明符 函数名(参数表)const;
这里,const是函数类型的一个组成部分,因此在实现部分也要带const关键字。
const关键字可以被用于参与对重载函数的区分
通过常对象只能调用它的常成员函数。
②常数据成员
使用const说明的数据成员。
//常成员函数举例 #includeusingnamespacestd; classR{ public: R(intr1,intr2):r1(r1),r2(r2){} voidprint(); voidprint()const; private: intr1,r2; }; voidR::print(){ cout< //常数据成员举例 #includeusingnamespacestd; classA{ public: A(inti); voidprint(); private: constinta; staticconstintb;//静态常数据成员 }; constintA::b=10; A::A(inti):a(i){} voidA::print(){ cout< (4)常引用
如果在声明引用时用const修饰,被声明的引用就是常引用。
常引用所引用的对象不能被更新。
如果用常引用做形参,便不会意外地发生对实参的更改。常引用的声明形式如下:
const 类型说明符 &引用名;
//常引用作形参 #include#include usingnamespacestd; classPoint{//Point类定义 public://外部接口 Point(intx=0,inty=0) :x(x),y(y){} intgetX(){returnx;} intgetY(){returny;} friendfloatdist(constPoint&p1,constPoint&p2); private://私有数据成员 intx,y; }; floatdist(constPoint&p1,constPoint&p2){ doublex=p1.x-p2.x; doubley=p1.y-p2.y; returnstatic_cast (sqrt(x*x+y*y)); } intmain(){//主函数 constPointmyp1(1,1),myp2(4,5); cout<<"Thedistanceis:"; cout< 以上就是详解C++共享数据保护机制的详细内容,更多关于C++共享数据保护机制的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。