首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

const 有什么用啊该怎么处理

2013-07-04 
const 有什么用啊??const 有什么用啊???[解决办法](1)可以定义const常量,具有不可变性。   例如:const int

const 有什么用啊??
const 有什么用啊???
[解决办法]
(1)可以定义const常量,具有不可变性。 
  例如:const int Max=100; int Array[Max]; 
  (2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。
  例如: void f(const int i) { .........} 编译器就会知道i是一个常量,不允许修改; 
  (3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。 同宏定义一样,可以做到不变则已,一变都变!
  如(1)中,如果想修改Max的内容,只需要:const int Max=you want;即可! 
  (4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。 还是上面的例子,如果在函数体内修改了i,编译器就会报错; 
  例如: void f(const int i) { i=10;//error! } 
  (5) 为函数重载提供了一个参考。 
  class A { ...... 
  void f(int i) {......} //一个函数 
  void f(int i) const {......} //上一个函数的重载 ...... 
  }; 
  (6) 可以节省空间,避免不必要的内存分配。 例如: 
  #define PI 3.14159 //常量宏 
  const doulbe Pi=3.14159; //此时并未将Pi放入ROM中 ...... 
  double i=Pi; //此时为Pi分配内存,以后不再分配! 
  double I=PI; //编译期间进行宏替换,分配内存 
  double j=Pi; //没有内存分配 
  double J=PI; //再进行宏替换,又一次分配内存! 
  const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。 
  (7) 提高了效率。 
  编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。

[解决办法]
用处很多
http://blog.csdn.net/eric_jo/article/details/4138548

你可以随便统计一些较好的开源代码,代码中出现最多的关键字应该就是const
[解决办法]
const很有用。搞清楚它,对C++的理解会跟深一层。
比如搞清楚下面两种用法的区别:
const char * pText;
char * const pText;
[解决办法]
不用的地方,不同的用处。变量,函数。。。。。很多
[解决办法]
个人观点:const没用!
不要纠结各种常量了,这个世界上唯一不变的就是变化。用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!

[解决办法]

引用:
个人观点:const没用!
不要纠结各种常量了,这个世界上唯一不变的就是变化。用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!

自己写程序才别用const呢,难得劳神费力
别人写的代码能看到这玩意知道怎么回事就行了


就好像你在电视里见过猪长什么样子,
要在外面碰到了猪就不怕了
不然还担心呢,这什么玩意啊,咬不咬人呀??
[解决办法]
赵老师境界高呀。小弟们还理解不了。觉得const 比宏定义好用些。
[解决办法]

引用:
个人观点:const没用!
不要纠结各种常量了,这个世界上唯一不变的就是变化。用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!

唉,不要再到处粘贴这种垃圾了,除了制造厌烦和误导没有任何作用。你的错误在于以为const是常量,其实无论C/C++都从未规定而且也从未认为const是常量,只有国内那些自以为是的作者才自造const常量。而且,从你的语言描述来看,你对C/C++中的常量也有非常大的误解,C/C++中的常量并不是你所想象中那样的。
[解决办法]
const 是你和编译器的约定,约定某个量是不变的,是一个关于数据不变性的约定。
如果你违约,编译器会提出警告,甚至认为是错误。
这样你就可以,检查出各种,违反不变性的错误。

事实上只有整型常数,和整型常量以及整型常量表达式,是真正的常量。
完全可以不占用,任何数据区(全局变量区,堆区,栈区)的内存空间,并且可以定义数组的大小。

像数组常量这种,只是一种常变量而已,是一种不会改变的变量,不属于真正的常量。

浮点型数据很多时候,也只是常变量而已,不是真正的常量。
真正的常量,要么直接编译到指令中,要么最终从代码中消失。

常变量则会像变量一样,在各种数据区占有一个位置。有时甚至占有两个位置,(如局数组部初始化用的常量)。


[解决办法]
整型常量,只有可以看做常量表达式的整型常量,才是常量,有些整型常量也只是常变量,不变的变量而已。

int func(int x)
{
  const int t=x; //t不过是常变量而已,不是什么常量。
}
[解决办法]
const 类似于汽车上的保险杠,如果你驾驶技术一般,万一车开过了火有它挡着车身不会受伤,如果驾驶技术好的话确实不需要,难看又占地方,但是如果不加保险杠那就别借给别人开啊?
[解决办法]
可以用来代替宏,其它场合一般不用

[解决办法]
引用:
可以用来代替宏,其它场合一般不用

扯。
const更主要的用途是用在函数的指针参数和引用参数上,表明传入的对象不被改变,这很有可能引发编译器的优化行为。
[解决办法]
引用:
可以用来代替宏,其它场合一般不用

在类的成员函数的参数中const很常见。拷贝构造函数的参数就是。A(const A & a);
用来修饰类的成员函数也很常见。典型的比如void show() const;

热点排行