`
yangliuy
  • 浏览: 69532 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

C/C++ const类型用法总结

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

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

cons的作用
(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的用法,const 定义变量,指针的用法和不同

    C/C++ 语言中 const 的用法详解 在 C/C++ 语言中,const 关键字是一个非常重要的概念,它用于定义只读变量和常量。但是,const 的用法有一些细微的差别,容易让人感到困惑。在本文中,我们将详细介绍 C/C++ 语言中 ...

    林锐-高质量c/c++编程指南

    ### 林锐-高质量C/C++编程指南 #### 概述 《林锐-高质量C/C++编程指南》是一份由林锐博士编撰的专业文档,旨在为C/C++开发者提供一套规范化的编程指导原则。这份文档对于希望提升编程技能、编写出高质量代码的C++...

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

    C/C++ 中 CONST 用法总结 CONST 是 C/C++ 编程语言中的一种关键字,用来定义常量。 Const 修饰符可以应用于变量、指针、类对象、成员变量、成员函数和返回值等多种场景下。下面将详细介绍 CONST 的用法总结。 一...

    c/c++参考手册,帮助工具

    了解这些函数的使用方法是C++开发的基础,它能够帮助开发者高效地利用库资源,提高代码质量。 2. **Effective C++**(Effective_C++.chm):这是Scott Meyers的经典著作,书中列出了55条C++编程的实践建议,旨在...

    C/C++笔试题库 (整理版)

    C++语言中,const关键字的使用可以有多种形式,例如const char*, char const*, char*const等。这些形式的区别在于const关键字的位置,它们对应的含义分别是:指向_constant_char的指针、指向char的常量指针、常量...

    C++中const用法全解

    C++ 中 const 用法全解 const 在 C++ 中占有重要作用,属于小兵立大功的典型,本文档详细介绍了如何使用 const。 1. const 常量 在 C++ 中,const 可以用来修饰变量,称为常量。例如:const int max = 100; 这种...

    C/C++笔试题集锦

    在《关于C++中的类型转换》文档中,会详细介绍静态类型和动态类型,以及隐式转换和显式转换的规则,比如const_cast、static_cast、dynamic_cast和reinterpret_cast这四种类型转换的用法和场景。此外,C++的封装、...

    c/c++面试指南

    - **3.5 结构体**:掌握结构体的概念、定义和使用方法。 - **3.6 C和C++区别**:了解C语言和C++之间的差异,如内存管理、对象导向编程等方面的不同。 **第4章 预处理、const、static** - **4.1 预处理**:理解预...

    c++中const关键字使用详解

    本文将详细介绍const关键字在C++中的使用方法。 一、const基础 首先,const关键字可以用来修饰基本数据类型、指针、类的成员函数等。根据const修饰的位置不同,其作用也有差异。 1. const修饰基本数据类型 对于...

    C/C++高质量编程(林锐)

    ### C/C++高质量编程知识点概览 #### 一、书籍简介 《C/C++高质量编程》是一本由林锐博士撰写的关于提升C/C++代码质量的经典书籍。该书不仅内容精炼、易于理解,还提供了丰富的实际案例及详细的解答,帮助读者深入...

    C/C++经典笔试题汇总

    ### C/C++经典笔试题汇总知识点解析 #### 题目一:单向链表的反转 **知识点:** 1. **链表基础知识**:理解单向链表的基本结构(包含节点、节点间的链接关系等)。 2. **迭代反转算法**:掌握如何通过迭代方式实现...

    c/c++ 笔试面试题

    "C/C++ 笔试面试题" 本文将从给定的文件的标题、描述、标签...这份文件包含了C/C++语言的基础知识点,如数组、指针、隐式类型转换、sizeof运算符等,并且提供了一些笔试面试题目,帮助读者更好地理解和掌握C/C++语言。

Global site tag (gtag.js) - Google Analytics