当前位置:首页 > 编程开发

const常类型说明

webgou16年前 (2010-07-26)编程开发88
const : 不能修改 [CODE_LITE] const常类型说明 * 分类 常变量: const 类型说明符 变量名 常引用: const 类型说明符 &引用名 常对象: 类名 const 对象名 常成员函数: 类名::fun(形参) const 常数组: 类型说明符 const 数组名[大小] 常指针: const 类型说明符* 指针名 ,类型说明符* const 指针名 * 实例说明 const 类型说明符 &引用名 : #include void display(const double& r) { // r=12.0;//错的 cout< class R { public: R(int r1,int r2) {R1=r1;R2=r2;} void print(); void print() const; private: int R1,R2; }; void R::print() { cout<const<对象名> 或 const<类名><对象名> 两者无区别 * 常指针: o + int * const r=&n (r是常量指针,不允许改变,所以:r=m是错误的,*r=1是允许的。) + const int *r=&n (*r是常量,不允许改变,所以:r=m是允许的,*r=1是错误的。) * 常引用: const <类名>&<引用名> * 常成员函数:只有常成员函数才能操作常量或常对象。 <类型><函数名>(<参数表>) const * 常数据成员:只能使用成员初始化列表的方式生成构造函数来对数据成员进行初始化 ########################################################################################### 常对象和常函数的关系 const http://blog.sina.com.cn/s/blog_4ac0a0d30100cmz5.html (1) 常对象 用const修饰的对象叫对象常量,其格式如下: 〈类名〉const 〈对象名〉 或者 const 〈类名〉〈对象名〉 声明为常对象的同时必须被初始化,并从此不能改写对象的数据成员。 例:分析下列错误的地方,说明理由; #include class Point { int x, y; public: Point(int a, int b) { x=a; y=b;} Void MovePoint( int a, int b){ x+=a; y+=b;} Void print(){ cout<<"x="< int length(const Point &p1, const Point &p2) { int l; l=sqrt((p1.x -p2.x)* (p1.x -p2.x)+(p1.y-p2.y)*(p1.y-p2.y)); return l; } void main( ) { Point a(1,1),b(4,5); Cout<<"两点的距离是:"< class Point { int x, y; public: Point(int a, int b) { x=a; y=b;} Void MovePoint( int a, int b){ x+=a; y+=b;} Void print()const { cout<<"x="< <成员函数名>(<参数表>) const; 在使用常成员函数时要注意: (1) const是函数类型的一个组成部分,因此在函数实现部分也要带有const关键字。 (2) 常成员函数不更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数。 (3) 常对象只能调用它的常成员函数,而不能调用其他成员函数。成员函数与对象之间的操作关系如表12-1所示。 常对象和常函数的关系 const 来源:(http://blog.sina.com.cn/s/blog_4ac0a0d30100cmz5.html) - 常对象和常函数的关系 const_天涯霜雪_新浪博客 (4) const关键字可以用于参与重载函数的区分。例如: void Print(); void Print() const; 这两个函数可以用于重载。重载的原则是:常对象调用常成员函数,一般对象调用一般成员函数。 (5)在const成员函数中: 可以修改被定义成mutable的成员变量,使用mutable关键字定义的成员变量可以被const成员函数修改! 保护类的成员变量不在成员函数中被修改,是为了保证模型的逻辑正确,通过用const关键字来避免在函数中错误的修改了类对象的状态。并且在所有使用该成员函数的地方都可以更准确的预测到使用该成员函数的带来的影响。而mutable则是为了能突破const的封锁线,让类的一些次要的或者是辅助性的成员变量随时可以被更改。没有使用const和mutable关键字当然没有错,const和mutable关键字只是给了建模工具更多的设计约束和设计灵活性,而且程序员也可以把更多的逻辑检查问题交给编译器和建模工具去做,从而减轻程序员的负担(yayv觉得这只不过是把负担移交给了设计人员~, :(,并没有降低任何工作量 )。如果开发过程有比较严格的迭代过程,使用这两个关键字应该更能体现出他们的作用。 [/CODE_LITE] 来源:http://my.oschina.net/alphajay/blog/5749

扫描二维码推送至手机访问。

版权声明:本文由知了博客发布,如需转载请注明出处。

本文链接:https://www.webgou.info/?id=193

分享给朋友:

“const常类型说明” 的相关文章

使用虚列表和自画实现文件夹的缩略图显示

预备性阅读在阅读本文之前,建议先对列表视图控件和系统外壳有一个基本的了解。建议阅读以下SDK文章 Shell FAQ List-View Controls Overview...…

送给所有的共享新手

经常看到很多同行们对共享软件能否赚到钱感到困惑,虽然大家都知道的周易前辈的MP3 CD Maker创下了月入四万的记录,但这对我们大多数人来说,只是一个很遥远的梦,就好象是水中的月亮,可望不可及。这个也曾经是我投入这个行业是的目标, 虽然到目前我的收入才达到他的四分之一,但我已心滿意足了,回顾两年…

深刻理解Linux进程间通信(IPC)

一个大型的应用系统,往往需要众多进程协作,进程(Linux进程概念见附1)间通信的重要性显而易见。本系列文章阐述了 Linux环境下的几种主要进程间通信手段,并针对每个通信手段关键技术环节给出详细实例。为达到阐明问题的目的,本文还对某些通信手段的内部实现机制进 行了分析。 序…

7款开源Java反编译工具

7款开源Java反编译工具…

Webservice 的设计和模式

本文是篇译文(原文在devx),对于想初步了解webservice的朋友可能有些帮助。http://www.devx.com/enterprise/Article/10397http://www.cnblogs.com/idior/archive/2004/12/13/76600.html...…

何小鹏:移动互联网不得不看的5个大坑

 这是UC创始人何小鹏在创新派主办PMx沙龙上的一次主题演讲,从产品经理的角度深度挖掘了移动互联网创新的那些坑,很干货,也很毁三观:...…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。