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

const常类型说明

webgou16年前 (2010-07-26)编程开发210
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常类型说明” 的相关文章

Java网络编程基础 ServerSocket类使用

由于SSClient使用了流套接字,所以服务程序也要使用流套接字。这就要创建一个ServerSocket对象,ServerSocket有几个构造函数,最简单的是ServerSocket(int port),当使用ServerSocket(int port)创建一个ServerSocket对象,por…

CocoaAsyncSocket学习

CocoaAsyncSocket支持tcp和udp。其中: AsyncSocket类是支持TCP的 AsyncUdpSocket是支持UDP的AsyncSocket是封装了CFSocket和CFSteam的TCP/IP socket网络库。它提供了异步操作,本地cocoa类的基于dele…

使用Nginx实现根据 IP 匹配指定 URL

 最近的一个项目,需要特定的IP访问某专题页面的时候跳转到网站首页,思考了下,直接使用NGINX实现,分享给大家。业务需求...…

AI 使用 Unity MCP 自动操作 Unity:从连接配置到生成五子棋场景的实战记录

MCP Server 启动验证Unity 插件连接验证新建 Unity 场景创建并挂载 MonoBehaviour 脚本实现单机五子棋Play Mode 验证Console 错误检查对于 Unity 开发来说,这类工具很适合做原型验证和重复性编辑器操作。它还不能完全替代开发者,但已经可以显著减少“写…

谁偷了我的热更新?Mono,JIT,IOS

 谁偷了我的热更新?Mono,JIT,IOS…

ios游戏应用上线需要哪些准备?

-˃营销产品 -˃开发产品-˃维护产品 开发所需: 硬件: 1.mac 一台 2.iphone/ipad,其它apple产品是可选的 3.1U服务器一台,以及服务器托管费用 软件: 1.c/s技术,用于应用及后台统计。 2.ios应用开发,类似mfc/qt做界面库的使用 3.游戏类技术积累,现在…

发表评论

访客

看不清,换一张

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