C++之const关键字
本文引自http://www.cnblogs.com/lichkingct/archive/2009/04/21/1440848.html ,略有增删
const关键字在c++中用法有很多,总结如下:
- 修饰变量和指针:
- 修饰变量时把变量转换为常量,定以后不能修改,定义时就要初始化。含义是const修饰的变量varName时只读的,不可改变。格式如下:
TYPE const varName=value;
const TYPE varName=value;(推荐写法)
试图定义一个非const对象的指针指向一个常量对象将会导致编译错误.const double minWage= 9.60;
double *ptr=&minWage //引起编译错误const double *ptr=&minWage //编译正确
- 修饰指针时,const在不同的位置含义不同,记忆的方法:const在*前则可认为const修饰的是解指针的值,即内容不可变,const在*后则可认为const修饰的是指针,即指向的地址不可变
const char* ptr="abc"; //*ptr不可变,ptr可变,即指针指向的内容不可变,而指针可以指向其他位置
char const *ptr="abc";//同上 char *const ptr="abc" //ptr不可变,*ptr可变,即指针指向的地址不能变,地址中存放的数据可以边
const char* const ptr="abc"//两者都不可变 - const修饰函数参数:表示函数体中不能修改参数的值
- const修饰类对象/对象指针/对象引用:表示对象,对象指针和对象引用中的任何成员都不能被改变,且只能调用const成员函数。const修饰类成员变量:表示成员常量,它只能在初始化列表中赋值
class Base
{
...const int value; ....A(intx):value(x){}//在成员初始化列表中初始化const常量
};- const修饰类成员函数:该成员函数不能修改类中任何成员变量,且只能调用const成员函数
class Base
{
void function()const; //常成员函数, 它不改变对象的成员变量. 也不能调用类中任何非const成员函数 } - const常量与defin宏定义的区别
- 编译器处理方式不同:
- define宏在预处理阶段展开
- const常量在编译运行阶段使用
- 类型和安全检查不同
- define宏没有类型,不做任何类型检查,仅仅展开
- const常量具有具体的类型,在编译价额段执行类型检查
- 存储方式不同
- define宏仅仅是展开,在哪个地方使用就在哪个地方展开
- const常量在内存中分配
C++之const关键字的更多相关文章
- PHP的final关键字、static关键字、const关键字
在PHP5中新增加了final关键字,它可以加载类或类中方法前.但不能使用final标识成员属性,虽然final有常量的意思,但在php中定义常量是使用define()函数来完成的. final关键字 ...
- C++中const关键字的使用总结
C++中使用const关键字来修饰常量,下面从两个方面总结:变量和成员函数. 变量:const可以修饰普通变量.指针(数组)和结构体. 1.const修饰普通变量是最简单的情形.这样的用法多为在程序中 ...
- final关键字+const关键字
final关键字 1.如果我们希望某个类不被其它的类来继承(可能因为安全考虑),可以使用final. 例题 <? final class A{} class B extends A{};//会报 ...
- C++学习11 类和new、delete操作符 类与const关键字
如果你是Java.C#.PHP程序员,那么会对 new 非常熟悉,在这些编程语言中,只能通过 new 来创建对象. 在C++中,你可以像定义变量一样来创建对象,如: Student stu; //对象 ...
- C++中的const关键字
http://blog.csdn.net/eric_jo/article/details/4138548 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方 ...
- 陈正冲老师讲c语言之const关键字
1.const 关键字也许该被替换为 readolny const是constant的缩写,是恒定不变的意思,也翻译为常量.常数等.很不幸,正是因为这一点,很多人都认为被const修饰的值是常量.这是 ...
- C语言之头文件,static与const关键字
[前言] 最近几个月在做一个C语言代码重构的项目,过程中也让我对之前在书本上学习到的东西有些补充和巩固,在本博中总结记录下,梳理下零碎的知识点和经验也加深印象,书写是为了更好地思考.平时也都是用印象笔 ...
- static和const关键字的作用
static关键字至少有下列n个作用: (1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值: (2)在模块内的stat ...
- const关键字详解
const在函数前与函数后的区别 一 const基础 如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况: int b = 500; ...
- C++ const关键字用法详解
1const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目. 事实上这个概念谁都有只是三种声明方式非常相似很容易记混. Bjarne在他的T ...
随机推荐
- windows2003安装
产品密钥JCDPY-8M2V9-BR862-KH9XB-HJ3HMiis的i386文件夹http://pan.baidu.com/s/1dD0EY6twindows2003的iso映像http://p ...
- Windows挂载NFS目录权限问题
windows挂载Linux上的NFS后, 可能会出现没有权限打开文件的问题 解决方法: 在注册表中添加匿名用户的默认UID和GID 计算机\HKEY_LOCAL_MACHINE\SOFTWA ...
- 两个NSMutableDictionary合并成一个NSMutableDictionary
解决方案: NSMutableDictionary *targetMutableDictionary = [mutableDictionary1 copy]; [targetMutableDictio ...
- POJ 3628 01背包 OR 状压
思路: 1.01背包 先找到所有奶牛身高和与B的差. 然后做一次01背包即可 01背包的容积和价格就是奶牛们身高. 最后差值一减输出结果就大功告成啦! 2. 搜索 这思路很明了吧... 搜索的确可以过 ...
- getElementsByClassName 方法兼容性封装方法二
var getElmsByClsName = function(className, results) { results = results || []; // 判断浏览器是否支持 getEleme ...
- Unity 脚本挂载位置
原则:谁的脚本,挂载到谁身上 1,一般场景中会有个GameController脚本,挂在空物体上. 2,我见很多人脚本习惯挂到Camera上,好吧,不知算不算规范.
- day15 函数对象以及作用域
目录 函数对象 函数对象的四大功能 函数的嵌套 名称空间和作用域 名称空间 考试必考 作用域 global nonlacal LEGB原则 函数对象 ==Python中一切皆对象== 函数名也可以看成 ...
- 快速掌握ajax!
ajax是什么? ajax——asynchronous JavaScript and xml:异步的js和xml 它能使用js访问服务器,而且是异步访问 服务器给客户端的响应一般是整个页面,一个htm ...
- 使用短信猫发送短信java代码
短信猫简单配置:https://www.cnblogs.com/Big-Boss/p/9699880.html 发送短信: package utils; import org.smslib.AGate ...
- 洛谷P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows 状压动归
考场上空间开大了一倍就爆0了QAQ- Code: #include<cstdio> #include<algorithm> #include<cmath> usin ...