C++中的const和mutable】的更多相关文章

1 #include<iostream> 2 using namespace std; 3 //如果在类A的成员函数dis()中想要修改_z,但是不能修改_x,_y怎么办? 4 //如果dis不加const,那么_x和_y就可以修改,如果加了const,那么_z便不能够修改. 5 //解决方法就是在_z前面加上mutable,表示这个_z对于类A而言,修改他的值并没有多大影响. 6 class A 7 { 8 public: 9 A(int x, int y):_x(x),_y(y) {} 1…
在学习C++的过程中,经常被什么时候使用const.为什么使用const以及怎么使用const关键字这样的问题所困扰,以下是我对const的使用总结. 1.值替代 使用#define的确单缺点,第一:没有类型信息,这就会隐藏一些很难发现的错误:           第二:如果只是想取某个class的专属常量地址,#define无法创建一个class的专属常量         第三:#define或许不被视为语言的一部分,这样会导致PI可能不会被编译器看见,以至于在运用此常量时会产生错误信息:  …
C++中的const可用于修饰变量.函数,且在不同的地方有着不同的含义,现总结如下. const的语义 C++中的const的目的是通过编译器来保证对象的常量性,强制编译器将所有可能违背const对象的常量性的操作都视为error. 对象的常量性可以分为两种:物理常量性(即每个bit都不可改变)和逻辑常量性(即对象的表现保持不变).C++中采用的是物理常量性,例如下面的例子: struct A { int *ptr; }; int k = 5, r = 6; const A a = {&k};…
一.在类定义中实现成员函数inline 类内的成员函实现其实也叫作类内的成员函数定义. 这种直接在类的定义中实现的函数,会被当做inline内联函数来处理. 二.成员函数末尾的const const:常量,在成员函数后面增加一个const.不但需要在成员函数声明的中增加const,也要在成员函数定义中增加const. 作用:告诉系统,这个成员函数不会修改对象里面任何变量的值等等,也就是说,这个成员函数不会修改MyTime类的任何状态. 函数末尾增加一个const称为常量成员函数. 三.mutab…
const成员变量 举个例子 #include <iostream> using namespace std; class A { public: A(int size) : SIZE(size) {}; private: const int SIZE; }; int main() { A a(); } 说明 在类中声明变量为const类型,但是不可以初始化 const常量的初始化必须在构造函数初始化列表中初始化,而不可以在构造函数函数体内初始化 但是 此时的const变量属于具体的一个对象,…
const:常量,不变的 mutable:易变的 从意思上理解,可见const和mutable是一对反义词,它们都是C++的关键字. const成员函数不能修改调用它的对象.类的成员函数可以被声明为const,这将使得函数的隐式参数this将被作为const类型的指针.这也就意味着一个const成员函数不能修改调用它的对象.而且,const对象不能调用非const成员函数.然而,const对象和非const对象都可以调用const成员函数. 要将一个成员函数声明为const,可以使用下面的形式:…
一,C++中const的基本知识 1.C++中const的基本概念 1.const是定义常量的关键字,表示只读,不可以修改. 2.const在定义常量的时候必须要初始化,否则报错,因为常量无法修改,只能在定义的时候才可以进行初始化. 2.C++中const的基本用法 # include<iostream> int main() { // 表示一个整数常量 ; // 表示一个整数常量 ; // 必须在定义定义常量的时候立即进行初始化 // int const c; 该语句报错,因为未进行初始化…
http://blog.csdn.net/eric_jo/article/details/4138548 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助. Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的. 一.Const作用    如下表所示: No. 作用 说明 参考代码 1 可以定义const常量 const int Max…
同样,有下面一段代码: #include <iostream> using namespace std; int main() { ; int *j = (int *) &i; *j = ; cout<<"i address = 0x"<<hex<<&i<<","<<"j address = 0x"<<hex<<j<<end…
“常量”与“只读变量”的区别. 常量肯定是只读的,例如5, "abc",等,肯定是只读的,因为常量是被编译器放在内存中的只读区域,当然也就不能够去修改它. “只读变量”则是在内存中开辟一个地方来存放它的值,只不过这个值由编译器限定不允许被修改.C语言关键字const就是用来限定一个变量不允许被改变的修饰符(Qualifier). 在ANSI C 语言中用enum类型和#define宏,这两个都可以用来定义常量. 类型声明中const用来修饰一个常量,有如下两种写法. 1).const在…