`
wangxiaohigh
  • 浏览: 1423545 次
文章分类
社区版块
存档分类
最新评论

c/c++中const用法总结

 
阅读更多
const类型定义:指明变量或对象的值是不能被更新,引入目的是为了取代预编译指令

**************常量必须被初始化*************************

const的作用
(1)可以定义const常量例如:
constintMax=100;
intArray[Max];
(2)便于进行类型检查例如:
voidf(constinti){.........}
编译器就会知道i是一个常量,不允许修改;
(3)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。
还是上面的例子,如果在函数体内修改了i,编译器就会报错;
例如:
voidf(constinti){i=10;//error!}
(5)为函数重载提供了一个参考。
classA
{
......
voidf(inti){......}file://一个函数
voidf(inti)const{......}file://上一个函数的重载
......
};
(6)可以节省空间,避免不必要的内存分配。
例如:
#definePI3.14159file://常量宏
constdoulbePi=3.14159;file://此时并未将Pi放入ROM中
......
doublei=Pi;file://此时为Pi分配内存,以后不再分配!
doubleI=PI;file://编译期间进行宏替换,分配内存
doublej=Pi;file://没有内存分配
doubleJ=PI;file://再进行宏替换,又一次分配内存!
const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。
(7)提高了效率。
编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。

使用const
(1)修饰一般常量,常数组,常对象
  修饰符const可以用在类型说明符前,也可以用在类型说明符后。例如:
intconstx=2;  或  constintx=2;

  intconsta[5]={1,2,3,4,5};或constinta[5]={1,2,3,4,5};

classA; constAa;或Aconsta;
  
(2)修饰指针
constint*A;或intconst*A;//const修饰指向的对象,A可变,A指向的对象不可变
int*constA; //const修饰指针A,A不可变,A指向的对象可变
constint*constA;//指针A和A指向的对象都不可变
(3)修饰引用
  constdouble&v;该引用所引用的对象不能被更新
 (4)修饰函数的返回值:
const修饰符也可以修饰函数的返回值,是返回值不可被改变,格式如下:
constintFun1();
constMyClassFun2();
(5)修饰类的成员函数:
const修饰符也可以修饰类的成员函数,格式如下:
classClassName
{
public:
  intFun()const;
 .....
};
这样,在调用函数Fun时就不能修改类里面的数据
(6)在另一连接文件中引用const常量
externconstinti;//正确的引用
externconstintj=10;//错误!常量不可以被再次赋值



*******************放在类内部的常量有什么限制?

classA
{
private:
constintc3=7;//err
staticintc4=7;//err
staticconstfloatc5=7;//err
......
};
初始化类内部的常量
1初始化列表:
classA
{
public:
A(inti=0):test(i){}
private:
constinti;
};
2外部初始化,例如:
classA
{
public:
A(){}
private:
staticconstinti;
};
constintA::i=3;
分享到:
评论

相关推荐

    C/C++中CONST用法总结(推荐)

    主要介绍了C/C++中CONST用法总结(推荐),包括const常量与define宏定义的区别介绍,非常不错,具有参考借鉴价值,需要的朋友参考下吧

    c/c++语言中const的用法,const 定义变量,指针的用法和不同

    c/c++语言中const的用法,const 定义变量,指针的用法和不同

    C/C++ 中const关键字的用法小结

    C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性。这篇文章主要介绍了C/C++ 中const关键字的用法,需要的朋友可以参考下

    详解C/C++中const关键字的用法及其与宏常量的比较

    简单的说const关键字修饰的变量具有常属性,也就是说它所修饰的变量不能被修改,下文给大家介绍C/C++中const关键字的用法及其与宏常量的比较,需要的朋友可以参考下

    C/C++中Constkeyword

    在做一个趋势笔试题的时候。才让我有了系统把constkeyword好好总结一下的冲动,由于这个...  在C程序中,const的使用方法主要有定义常量、修饰函数?数和修饰函数返回值。  而在C++程序中。它除了上述功能外,还能

    C/C++中static,const,inline三种关键字详细总结

    一、关于staticstatic 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性,下面我将从 static 修饰符的产生原因、作用谈起,全面分析static 修饰符的实质。 static 的两大作用: 一、控制存储方式 static...

    C++语言const 关键字使用方法图文详解

    之前一直在学习C/C++,关于const的使用,这里出现一点,那里出现一点。知识用时方恨少,这一段时间正好各种笔试题,其中关于const的用法也是层出不穷,所以疲于在书本上各种翻,这里汇总一下,加深自己的印象的同时...

    C/C++笔试题(附答案,华为面试题系列)

    答:函数和变量被C++编译后在符号库中的名字与C语言的不同,被extern "C"修饰的变 量和函数是按照C语言方式编译和连接的。由于编译后的名字不同,C++程序不能直接调 用C 函数。C++提供了一个C 连接交换指定符号...

    const关键字使用总结

    关于C/C++中的const关键字的用法,你了解多少呢?

    c/c++ 学习总结 初学者必备

    c): const 参数修饰 和 参数返回类型的const修饰; d): const类成员 和 const 成员函数; 区别: const常量有数据类型, 而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只能进行字符 替换,没有...

    C++中const的用法详细总结

    1. const修饰普通变量和指针 const修饰变量,一般有两种写法: const TYPE value;TYPE const value; 这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。 对于一个非指针的类型...

    C++ 中const 类型限定符不兼容问题

    今天在写程序的时候,出现了一个错误 “对象包含与成员函数不兼容的类型限定符”,从... 您可能感兴趣的文章:C++中const用法小结C和C++ const的声明差异C++ 中const和复合类型C++中的const和constexpr详解C++编程中的co

    C++中const用法小结

    const在C++中使用十分广泛,不同位置使用的意义也不尽相同,所以想写篇文章对其做一个总结。 首先,明确const是“不变”这个基本意义,但是不变不意味着什么都不变,下面将会看到。 1. const与变量 基本原则:const...

    C++类中的static和const用法实例教程

    static和const是C++程序设计中非常重要的概念,本文实例列举了C++类中的static和const的规则和用法。供大家参考借鉴。具体说明如下: 首先以代码用来举例说明。示例代码如下: class A { public: A():m(10) //...

    C语言中的const和free用法详解

    C中的const用法(使用VS测试的时候,要注意建立一个C后缀的文件,因为C的编译器和C++的编译器还是有区别的) */ //const用作常量,int const a和const int a是一个意思都是表示常量,可以通过指针来改变常

    基于C/C++时间函数的使用详解

    下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法.通过学习许多C/C++库,你可以有很多操作、使用时间的方法。但在这之前你需要了解一些“时间”和“日期”的概念,主要有以下几个:Coordinated ...

    C++实现动态分配const对象实例

    本文实例讲述了C++实现动态分配const对象的方法。分享给大家供大家参考。具体方法分析如下: 一、创建 在C++中,允许动态创建const对象,格式如下: const int *p = new const int(128); 与其他常量一样,动态创建...

Global site tag (gtag.js) - Google Analytics