void function(const TYPE& Var); //引用参数在函数内为常量不可变 这样的一个const引用传递和最普通的函数按值传递的效果是一模一样的,他禁止对引用 的对象的一切修改,唯一不同的是按值传递会先建立一个类对象的副本, 然后传递过去,而它直接传递地址,所以这种传递比按值传递更有效.另外只有引用的const传递可以...
理想的const对象应该在其构造函数完成之前都是可写的,在析够函数执行开始后也都是可写的,换句话说,const对象具有从构造函数完成到析够函数执行之前的不变性,如果违反了这条规则,结果都是未定义的!虽然我们把const放入ROM中,但这并不能够保证const的任何形式的堕落,我们后面会给出具体的办法。无论const对象被放入ROM...
int * const p2 = &k; // 指针常量 对于指针p1, const修饰的是*p1,即p1指向的空间的值不可改变,例如*p1 = 20;就是错误的用法;但是p1的值是可以改变的,例如p1 = &k;则没有任何问题。 对于指针p2, const修饰的是p2,即指针本身p2不可更改,而指针指向空间的值是可以改变的,例如*p2= 15;是没有问题的...
在函数调用的过程中,函数的参数是建立在函数的栈上的变量。既然是变量,就可以通过 const 进行修饰。 将函数参数声明为 const 类型,表示对于函数来说,这个参数是一个 const 变量。也就是说,函数内部不能够改变这个参数的值。 将函数参数是一个指针,把它声明为 “指向 const 变量的指针” ,允许上层使用 ”指向 ...
void f(int i) const { ... } //上一个函数的重载 ... }; 可以节省空间,避免不必要的内存分配。 #define PI 3.14159 //常量宏 const doulbe Pi=3.14159; //此时并未将Pi放入ROM中 ... double i=Pi; //此时为Pi分配内存,以后不再分配! double I=PI;...
constchar* const p ="abc";p[1] ='B'; //compile errorp ="xyz"; //compile error 1. 2. 3. [5] 修饰函数参数:c语言中const修饰参数反映的含义同上所述 小结:C语言中,const的用法差不多就这些,比较简单。 C++扩充了const的用法 [1] 修饰成员变量:const成员变量只能在初始化列表里做初始化,程序...
const int a; // 常对象成员,只能在初始化列表赋值 public: // 构造函数 A{ }; A(int x) : a(x) { }; // 初始化列表 // const可用于对重载函数的区分 int getValue; // 普通成员函数 int getValue const; // 常成员函数,不得修改类中的任何数据成员的值 ...
void f(int i) {...} file://一/个函数 void f(int i) const {...} file://上/一个函数的重载 ... }; (6) 可以节省空间,避免不必要的内存分配。 例如: #define PI 3.14159 file://常/量宏 const doulbe Pi=3.14159; file://此/时并未将Pi放入ROM中 ... double i...
const int func(); 在函数中使用const,情况与定义变量的情况基本一致: int func() { Const int a=10; … } 二、C++中区别于C的const用法主要分为以下两种 const类成员 const类成员在对象构造期间允许被初始化并且在以后不允许被改变。const类成员和一般的const变量有所不同。const类成员是对应于每个对象而言,...