首页 > 程序开发 > 软件开发 > C++ > 正文
C++ Special:const关键字和常量指针 vs 指针常量
2017-08-10 09:47:10       个评论    来源:  
收藏    我要投稿

1、修饰primitive 变量,必须在定义的时候赋值。除了一个特殊情况:

将const改为外部连接,作用于扩大至全局,编译时会分配内存,并且可以不进行初始化,仅仅作为声明,编译器认为在程序其他地方进行了定义.


extend const int ValueName = value;

2、修饰指针

用一个很好的判断方法:如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于*的右侧,const就是修饰指针本身,即指针本身是常量。

3、修饰类成员、类方法和类对象(指针、引用)

const修饰类的成员函数,表示成员常量,不能被修改,同时它只能在构造方法的初始化列表中赋值。

const修饰类的成员函数,则该成员函数不能修改类中任何非const成员函数。一般写在函数的最后来修饰。对于const类对象/指针/引用,只能调用类的const成员函数,因此,const修饰成员函数的最重要作用就是限制对于const对象的使用。

const修饰类对象表示该对象为常量对象,其中的任何成员都不能被修改。对于对象指针和对象引用也是一样。const修饰的对象,该对象的任何非const成员函数都不能被调用,因为任何非const成员函数会有修改成员变量的企图。

4、修饰函数的参数

a.传递过来的参数在函数内不可以改变(无意义,因为Var本身就是形参)


void function(const int Var);


b.参数指针所指内容为常量不可变


void function(const char* Var);


c.参数指针本身为常量不可变(也无意义,因为char* Var也是形参)


void function(char* const Var);


d.参数为引用,为了增加效率同时防止修改。修饰引用参数时:


void function(const Class& Var); //引用参数在函数内不可以改变


void function(const TYPE& Var); //引用参数在函数内为常量不可变


这样的一个const引用传递和最普通的函数按值传递的效果是一模一样的,他禁止对引用的对象的一切修改,唯一不同的是按值传递会先建立一个类对象的副本, 然后传递过去,而它直接传递地址,所以这种传递比按值传递更有效.另外只有引用的const传递可以传递一个临时对象,因为临时对象都是const属性, 且是不可见的,他短时间存在一个局部域中,所以不能使用指针,只有引用的const传递能够捕捉到这个家伙.

点击复制链接 与好友分享!回本站首页
上一篇:C++ Special: 四种类型转换
下一篇:最后一页
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 |
版权所有: 88bifa.com--致力于做实用的IT技术学习网站