const 有什么用啊??

来源:互联网  时间:2016/9/1 20:15:49

关于网友提出的“ const 有什么用啊??”问题疑问,本网通过在网上对“ const 有什么用啊??”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: const 有什么用啊??
描述:

const 有什么用啊???


解决方案1:

引用 12 楼 Primitive_forest 的回复:
可以用来代替宏,其它场合一般不用

扯。
const更主要的用途是用在函数的指针参数和引用参数上,表明传入的对象不被改变,这很有可能引发编译器的优化行为。 解决方案2:

可以用来代替宏,其它场合一般不用

解决方案3:

const 类似于汽车上的保险杠,如果你驾驶技术一般,万一车开过了火有它挡着车身不会受伤,如果驾驶技术好的话确实不需要,难看又占地方,但是如果不加保险杠那就别借给别人开啊?

解决方案4:

赵老师境界高呀。小弟们还理解不了。觉得const 比宏定义好用些。

解决方案5:

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

自己写程序才别用const呢,难得劳神费力
别人写的代码能看到这玩意知道怎么回事就行了
就好像你在电视里见过猪长什么样子,
要在外面碰到了猪就不怕了
不然还担心呢,这什么玩意啊,咬不咬人呀?? 解决方案6:

不用的地方,不同的用处。变量,函数。。。。。很多

解决方案7:

const很有用。搞清楚它,对C++的理解会跟深一层。
比如搞清楚下面两种用法的区别:
const char * pText;
char * const pText;

解决方案8:

(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常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。

解决方案9:

引用 12 楼 Primitive_forest 的回复:
可以用来代替宏,其它场合一般不用

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

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

int func(int x)
{
  const int t=x; //t不过是常变量而已,不是什么常量。
}

解决方案11:

const 是你和编译器的约定,约定某个量是不变的,是一个关于数据不变性的约定。
如果你违约,编译器会提出警告,甚至认为是错误。
这样你就可以,检查出各种,违反不变性的错误。
事实上只有整型常数,和整型常量以及整型常量表达式,是真正的常量。
完全可以不占用,任何数据区(全局变量区,堆区,栈区)的内存空间,并且可以定义数组的大小。
像数组常量这种,只是一种常变量而已,是一种不会改变的变量,不属于真正的常量。
浮点型数据很多时候,也只是常变量而已,不是真正的常量。
真正的常量,要么直接编译到指令中,要么最终从代码中消失。
常变量则会像变量一样,在各种数据区占有一个位置。有时甚至占有两个位置,(如局数组部初始化用的常量)。

解决方案12:

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

唉,不要再到处粘贴这种垃圾了,除了制造厌烦和误导没有任何作用。你的错误在于以为const是常量,其实无论C/C++都从未规定而且也从未认为const是常量,只有国内那些自以为是的作者才自造const常量。而且,从你的语言描述来看,你对C/C++中的常量也有非常大的误解,C/C++中的常量并不是你所想象中那样的。 解决方案13:

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

解决方案14:

用处很多
http://blog.csdn.net/eric_jo/article/details/4138548
你可以随便统计一些较好的开源代码,代码中出现最多的关键字应该就是const

上一篇麻烦老师出来,指导下,关于我在堆栈里生成对象所出现的你问题。
下一篇请问,这个string的判断表达是什么? 我这么写也是可以的吧?
明星图片
相关文章
《 const 有什么用啊??》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)