在编程语言中,const关键字用于声明一个常量,它的值在初始化后不能被修改。const变量和const类型变量之间的区别在于它们的类型和使用场景。 const变量:它是一个常量,其值在初始化后不能被修改。它可以是任何类型的变量,包括基本数据类型和复杂数据类型。例如: ...
classTest{public:Test():a(0){}enum{size1=100,size2=200};private:constinta;//只能在构造函数初始化列表中初始化staticintb;//在类的实现文件中定义并初始化conststaticintc;//与 static const int c;相同。};intTest::b=0;//static成员变量不能在构造函数初始化列表中初始化,因为它不属于某个对象。
void function(const int Var); //传递过来的参数在函数内不可以改变(无意义,因为Var本身就是形参) void function(const char* Var); //参数指针所指内容为常量不可变 void function(char* const Var); //参数指针本身为常量不可变(也无意义, 因为char* Var也是形参) 参数为引用,为了增加效率同时防止修改。
const int * const a=&b;离a近的修饰的是指针,此时是常量指针,即只能指向其初始化时的位置。离int近的表示修饰的是指针指向的数据,此时是指向常量的指针,即不可通过指针操作修改该变量的值。结合使用时两者都有。 4)修饰类成员变量: const类型成员变量只能且必须在构造函数中用列表形式初始化。不能被修改。 5...
const int *p; //定义一个指向常量的指针。 int *const p; //定义一个指针常量,一旦指向某一变量的地址后,不可再指向其他变量的地址。(注意:指针常量也叫常量指针) 二者区别: const int *p; //p是一个变量,但指向一个常量。(即p可以指向任何地址,但是只能通过*p来读这块地址的内容,不能通过*p来写这块地...
const int i; const int &r1 = i; int &r2 = j; const int &r3 = j; int &r4 = i; 非常明显,前面两条的赋值语句是不会有不论什么问题的,由于等号两变的变量类型是全然一样的。其实我们全然能够将一个const类型的引用指向一个nonconst类型的变量。就像第三个等式一样。由于我们仅仅要保证变量的值不...
const int *p; //定义一个指向常量的指针。 int *const p; //定义一个指针常量,一旦指向某一变量的地址后,不可再指向其他变量的地址。(注意:指针常量也叫常量指针) 二者区别:const int *p; //p是一个变量,但指向一个常量。(即p可以指向任何地址,但是只能通过*p来读这块地址的内容,不能通过*p来写这块地址...
(4)对于类的成员函数,若指定其为const类型,则表明其是一个常成员函数,不能修改类的成员变量,只能用常实例化对象调用; static关键字内存作用域不同,static函数只是在声明它的文件中可见,不能被其他文件所用 1)修饰全局变量时,“让全局变量不那么全局”跟全局变量不同的是,当一个可执行目标文件是由多个源文件编译...
在cpp中变量的初始化和赋值过程中会忽略变量的顶层const,如果要想保留顶层const的属性,需要显示声明,这也为变量类型的定义和分析增加了一点难度。 3.1 顶层和底层const 是什么? 对于普通类型int char...等,他们的顶层const = 底层const, 或者说他们不区分顶层和底层.而对于指针而言即包含本身与所指类型的const属性。
只有类内const static 变量可以在类内初始化 普通静态成员初始化 <数据类型><类名>::<静态数据成员名>=<值> 普通静态成员使用 <类名>::<静态成员名> 静态成员函数使用 <类名>::<静态成员函数名>(<参数表>); 静态数据成员可以成为成员函数的可选参数,而普通数据成员则不可以。