大家都知道如下代码中,被const限定的a是不可以被直接修改的 void main() { const int a = 3; a=1; } 在C++中const修饰的常量,不能被直接修改,但是可以通过指针进行间接修改 来看下面的例子: 运行后输出 5 3 单步执行,利用内存窗口进行查看,未修改前a为3    当利用指针间接修改a后,a在内存中显示5        原意是想通过指针修改const常量a的值,运行后发现输出的a依然是3,a的值表面上并没有被改变. 但是查看内存窗口,发现a已经被改变,…
原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 程序一: 我们知道数组的下标不能为变量,必须是一个确定的值.在C语言中看程序: #define a 10 int main() { //第一部分 int c=20; int d=10; int arr[c+d]; //第二部分 //int const a=20; //int const b=10; //int arr[a+b]; return 0; } 理所当然的编译错误,因为数组下标不能是变量. 在C++中看相同的程序.在C++中这…
题目(一):我们可以用static修饰一个类的成员函数,也可以用const修饰类的成员函数(写在函数的最后表示不能修改成员变量,不是指写在前面表示返回值为常量).请问:能不能同时用static和const修饰类的成员函数? 分析:答案是不可以.C++编译器在实现const的成员函数的时候为了确保该函数不能修改类的实例的状态,会在函数中添加一个隐式的参数const this*.但当一个成员为static的时候,该函数是没有this指针的.也就是说此时static的用法和static是冲突的. 我们…
const与readonly常量 const与readonly都是用来定义常量,但是它们有什么区别呢? 下面我们来简要的说明一下: const修饰的常量是编译时常量,如:public const String PI=3.1415;什么是编译时常量,通俗来讲就是指你在声明时,必须要进行赋值(也就是初始化),如果不赋值,编译时会出现说“常量字段要求提供一个值”的异常. readonly修饰的是运行时常量,可以在声明中赋值,也可以在构造函数中赋值(注意只能在这两个地方赋值). http://www.c…
来自:http://blog.csdn.net/farrellcn/article/details/9096787 ------------------------------------------------------------------------------ 很多书籍中说函数参数如果是String类型的,如果在函数内部不改变参数的值,使用 const 修饰符会加快程序的执行速度,至于如何加快的?有的人说是因为 const 函数保证了参数字符串不会被复制.以前也没有对这个问题深入研究…
类型前加const修饰符限定变量为只读,称为常量,定义时必须初始化,且初始化后编译器不允许再修改常量的值. 一.常量的定义 const在类型前面 const int value: //value是const const char *value; //*value是const, value可变 const (char *) value; //value是const,*value可变 char* const value; //value是const,*value可变 const char* cons…
At the very first ,I got a problem . Vector Vector::operator+(const Vector &v)const{ return Vector(x+v.val_x() ,y+v.val_y());//at the very fisrt, I didn't add const to the //implemention of val_x()function,so i got an error.you should not call an unc…
Const是常量 Const在编译时会被编译为静态成员,它确定于编译时期,属类型级,通过类型来访问. 现在通过以下几种情况来说明const常量: (1)初始化 public const string _name; 这种方式是错误的,因为它的值须在编译时期确定,所以在声明要初始化. (2)构造器中初始化 public const string _name= "宋江"; public ConstReadonly() { _name = "吴用"; } 会有异常. ·为c…
const修饰基本数据类型 #include <iostream> using namespace std; void main(){ const int a = 1; const char b = 'k'; const float c = 3.14f; //a = 2; //b = 'n'; //c = 1.2f; } const修饰基本类型表示这些类型为常量,不能再修改或赋值.还有需要注意的是3.14默认为double类型,如果用float变量保存的话应该写成float c = 3.14f…
Date: 2014-1-1 Summary: const 修饰符笔记 Contents: 1.const 修饰符 声明一个常量数据类型 , 在编译时就确定数据类型 2.const 与 指针 一般情况会有两种: const 在 *的左边或者右边 (1)const 在 * 左边 则无法通过该指针修改其指向的内存的值 ex: int num = 10; const int* p = &num; //如果(*p)++ ,则编译器报错 (2)const 在*右边 则无法让该指针指向其他内存空间 int…