c与c++_const的区别

C与C++中const的区别,让很多朋友都容易混淆,我们从几个方面来做下说明。

操作方法

  • 01

    C中的const,功能比较单一,较容易理解: 作用:被修饰的内容不可更改。 使用场合: 修饰变量,函数参数,返回值等。(c++中应用场合要丰富的多) 特点: 是运行时const,因此不能取代#define用于成为数组长度等需要编译时常量的情况。同时因为是运行时const,可以只定义而不初始化,而在运行时初始化。如 const int iConst;。 另外,在c中,const变量默认是外部链接,因此在不同的编译单元中如果有同名const变量,会引发命名冲突,编译时报错。

  • 02

    c++中的const:跟c中比较,内容要丰富很多,当然,作用也更大了 一种是非类中的const,另一种是类中的const。 一:非类成员const *在c++中,const变量(在这里涉及的const都不是类中的const,类中的const专门提出来记录)默认是内部连接的,因此在不同的编译单元中可以有同名的const 变量定义。 *是编译时常量,因此可以像#define一样使用,而且因为上面一点,可以在头文件中定义const变量,包含的不同的cpp文件(编译单元)中使用而不引起命名冲突。 *编译器默认不为const变量分配内存,除非:1. 使用 extern 申明, 2:程序中有引用const 变量的地址。 * 可以使用下面的类型转换(不安全的): 1: int * = (int *)pConst  2: int * = const_cast www.gzlij.com <int*>pConst(c++解const属性cast) * 函数参数或者返回值能使用 const & or const * 时,尽量使用const属性,增强程序健全性。 *c++中临时对象/内置变量默认具有const属性

  • 03

    二:类中的const *类中的const与c语言中的const一样,只是运行时常量,不能作为数组维数使用,即不能取代#define。在类中使用下面两种方式取代#define: 1:static const...  2: enum{....}//enum 不占存储空间 *类中的const 变量占用存储空间 *类中的const成员变量需要在构造函数初始化列表中初始化 *const 对象:在该对象生命周期内,必须保证没有任何成员变量被改变。const对象只能调用const成员函数。 *const成员函数: void fun() const ... 不仅能被const对象调用,也能被非const对象调用,因此,如果确认一个任何成员函数不改变任何成员变量,应该习惯性将该函数定义成const类型。 如果const成员函数需要改变成员变量,有两种实现方式: 1,const_cast<class*> this强制取消this指针的const属性。 2:将被改变的成员变量定义成mutable:mutable int i; //应永远只使用第二种方法,让任何阅读程序的人都知道该变量可能被const函数改变。 *如果一个对象被定义成const,那么该const对象“可能”会被放入到ROM当中,这在嵌入式开发当中有时非常重要。。。。(不能有任何自定义的constructor 和destructor。它的基类或者成员对象不能有自定义的constructor和destructor,不能有任何mutable成员变量)

(0)

相关推荐

  • iphone4s水货和行货有什么区别,不怕水货

    iphone4s水货和行货有什么区别 为了帮助新手辨别行货与水货,知道的就不用看了(不喜勿喷) 最近各位锋友都买了苹果最新产品4S,但是却不知道货源是否行货还是水货,可能还被卖家忽悠,下面为大家介绍怎 ...

  • 安卓手机水货和行货,翻新机区别在哪里?怎么辨别

    最近朋友想买手机,但不清楚什么是水货行货,其实这个词早就在很久就已经出现了,只是说有塞班时代到安卓时代,水货又多了一些概念。但终归还是不理本宗。其实,在小编看来,水货行货都是好货。关键是得自己会挑,因 ...

  • 360云盘同步版与360云盘之间有什么区别

    问:360云盘同步版和360云盘有什么区别? 答:360云盘同步版和360云盘听起来确实有点绕哦。 360云盘的宣传词是,您的手机U盘,您就可以理解为过去我们用的U盘,可以供你存放资料,和传统U盘所不 ...

  • 安卓4.0和2.3的区别在哪里?图文详解

    安卓4.0推出已经有一段时间 但对于想升级4.0的朋友来说 4.0区别自己以前2.3的差异在哪里? 到底自己要不要升级4.0了? 下面就来看看4.0有什么区别 相比2.3,安卓4.0在系统上的9大改进 ...

  • vs 专业版 旗舰版 Express 区别

    VS旗舰版和VS Express版有什么差别么? VS旗舰版是收费版,VS Express版是免费版,两者的区别主要就是一些功能上面的,如果开发小项目express版本,完全够用。 其实vsexpre ...

  • 微信理财通和余额宝哪个好?余额宝和微信理财通收益对比区别

    -收益对比 理财通7日年化收益率为6.4350%,相当于活期存款的16倍以上;余额宝7日年化收益率为6.6180%。 平台对比 理财通主打移动平台;余额宝移动、PC平台均可购买。 最大区别 余额宝的资 ...

  • win7各版本区别 windows7各版本功能区别图文介绍

    windows 7操作系统已经成为了2011年装机首选操作系统,也是目前最新的操作系统,不过windows 7操作系统一共有4个版本,分别是:windows 7家庭普通版、windows 7家庭高级版 ...

  • iPad Air2/mini3和Nexus9哪个好?iPad Air2/iPad mini3与谷歌Nexus9区别对比评测

    在昨日凌晨,谷歌刚发布了新旗舰平板Nexus9,紧接着在今日凌晨,苹果就一口气发布了iPad Air2/iPad mini3,这两个系统阵营的代表作都采用了最新配置,最新软件,应该是选择iPad Ai ...

  • ipad air2和nexus9哪个好?ipad air2和nexus9区别对比介绍

    ipad air2和nexus9哪个好呢?ipad air2和nexus9都是最近一天推出的新款平板电脑,下文小编就为大家带来ipad air2和nexus9二者配置、价格等多方面的对比详情,如果你还 ...