如果关键字const出现在星号左边,表示被指物是常量:如果出现在星号右边,表示指针自身是常量:如果出现在星号两边,表示被指物和指针两者都是常量. char greeting[] = " hello"; char* p = greeting;  //non-const pointer,non-const data const char* p = greeting;  //non-const pointer,const data  声明p为一个指向常量的greeting的指针,p指向的对象…
如果你对const足够了解,只需记住以下结论即可: 将某些东西声明为const可帮助编译器侦测出错误用法,const可被施加于任何作用于内的对象.函数参数.函数返回类型.成员函数本体. 编译器强制实施bitwise constness,但你编写程序时应该使用概念上的常量性(logical constness) 当const和non-const成员函数有实质等价的实现时,令non-const版本调用const版本可避免代码重复 关键字const允许你指定一个语义约束,即指定一个对象不被改动,编译器…
一.概述 使用const约束对象:可以获得编译器的帮助(指出相关出错的地方) const与成员函数:const重载.转型.避免代码重复 二.细节 1. 为什么有些函数要返回const对象(看上去没必要)? 返回const对象:a * b = c; //operator*()函数返回一个const对象,故该表达式错误 补充:我们的本意或许是a * b == c,此时返回const是没影响的,故返回const可以预防“没意思的赋值动作” 2. const成员函数不能避免对象被更改的情况 mutabl…
参考资料:http://blog.csdn.net/bizhu12/article/details/6672723      const的常用用法小结 1.用于定义常量变量,这样这个变量在后面就不可以再被修改 const int val = 90; val = 100;   错误 2. 保护传参时参数不被修改,如果使用引用传递参数或按地址传递参数给一个函数,在这个函数里这个参数的值若被修改, 则函数外部传进来的变量的值也发生改变,若想保护传进来的变量不被修改,可以使用const保护 void f…
场景一 用于修饰指针 char greeting[] = "Hello"; char* p = greeting; // non-const pointer, non-const data const char* p = greeting; // non-const pointer, const data char* const p = greeting; // const pointer, non-const data const char* const = greeting; //…
(整理自Effctive C++,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) 关键字const多才多艺,语法变化多端.关于const的基本用法,可以参见我的博客@http://www.cnblogs.com/hust-ghtao/p/3735941.html. 本篇博客主要讲了应用const时应该注意的地方. 1 令函数返回一个常量值 令函数返回一个常量值,往往可以降低客户因错误而造成的意外,而又不至于放弃安全性和高效性.例如有理数ope…
对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const,还有,两者都不指定为const: char *p = "hello"; // 非const指针, // 非const数据 const char *p = "hello"; // 非const指针, // const数据 char * const p = "hello"; // const指针, // 非const数据 const char…
char greeting[] = "hello"; char* p = greeting; //non-const pointer,non-const data const char* p = greeting; //non-const pointer, const data char* const p = greeting; //const pointer,non-const data const char* const p = greeting; //const pointer,…
***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************** 一. Accustoming Yourself to C++ Rule 03: Use const whenever possible. 条款03:尽可能的使用const const就是常量,它同意你指定一个语义约束,编译器会强制实施这项约束. 多才多艺的key…
Effective C++ Chapter 1. 让自己习惯C++(Accustoming Yourself to C++) Item 3. 尽可能使用 const (Use const whenever possible) 1. const 与语义约束 const 允许指定一个语义约束(也就是指定一个"不该被改动"的对象),而编译器强制实施这项约束.它可以在 classes 外部修饰 global 或 namespace(见 Item2)作用域中的常量,或修饰文件.函数.或区块作用域…