C 中MUTABLE关键字的用法
Mutable用法: mutable限定关键字说明被修饰对象在任何情况下都是可以被改变的。 假设,我们在写一个屏幕的类,其中有三个私有变量,屏幕的长、宽、当前鼠标的位置。对于屏幕来说,长、宽是其基本属性,而鼠标位置则是应该可以在整个屏幕内移动的,它不属于屏幕本身的状态。在初始化屏幕时,我们将其声明为const,则其私有...
mutable(易变的)是 C++ 中一个不常用的关键字。只能用于类的非静态和非常量数据成员。由于一个对象的状态由该对象的非静态数据成员决定,所以随着数据成员的改变,对像的状态也会随之发生变化。如果一个类的成员函数被声明为 const 类型,表示该函数不会改变对象的状态,也就是该函数不会修改类的非静态数据成员。
如果不需要传递参数,则可以省略该部分以及小括号()。 mutable: 使用了mutable修饰符的lambda表达式,不可以省略参数列表。 return_type: 函数返回值类型。该部分可以连同"->"一起省略。 process code: 函数体,它除了可以使用参数之外,还可以使用捕获到的变量。 lambda表达式样例: 代码语言:javascript 复制 [](int x,...
[mutableStr setString:@"我是可变字符串"]; //拼接一个字符串 [mutableStr appendString:@" ..."]; //拼接一个格式 [mutableStr appendFormat :@我有%d个朋友",3]; //替换字符串 [mutableStr replaceCharactersInRange : [mutableStr range of string @"age"]withString:@"Age"]; ...
mutable int showCount; void Show()const; }; void ST::Show()const{ //a=1;//错误,不能在const成员函数中修改普通变量 showCount++;//正确 } mutable只能修饰非静态数据成员; 9、const_cast: 用于修改类型的const或volatile属性。 用法: :const_cast<type_id> (expression) ...
例如:int a = 0, b = 3; [b,&a]() mutable { a = 4, b = 8;}(); 最终a=4, b=3; 标记2处是lambda的形参表,[](int a, void* b){//...}; 标记3处是mutable修饰符,说明 lambda 表达式体内的代码可以修改被捕获的变量,并且可以访问被捕获对象的 non-const 方法。
const成员函数,不能够修改任何成员变量,除非成员变量被 mutable 修饰符修饰。 在成员函数调用的过程中,都有一个 this 指针被当做参数隐性地传递给成员函数(可能通过栈,也可能通过CPU寄存器)。这个this指针,指向调用这个函数的对象(这样,成员函数才能找到成员变量的地址,从而对其进行操作)。这个this指针,是个 const指针,...
mutable 用于类的非静态非const数据成员,表示不受到成员函数的const的限制,可以在const成员函数中使用。 namespace 表示命名空间——其中可以声明若干标识符,组成的名称与其它命名空间不冲突。 可以声明一个命名空间或命名空间别名。 operator 和操作符连用,指定一个重载了的操作符函数。