const_cast<type_id> (expression)
来源:互联网 发布:sql server 2000安装 编辑:程序博客网 时间:2024/06/15 23:17
const_cast<type_id> (expression)
该运算符用来修改类型的const或volatile属性。除了const 或volatile修饰之外, type_id和expression的类型是一样的。
一、常量指针被转化成非常量的指针,并且仍然指向原来的对象;
二、常量引用被转换成非常量的引用,并且仍然指向原来的对象;
2案例编辑
volatile和const类似。举如下一例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class
B
{
public
:
B() { }
public
:
int
m_iNum;
};
void
foo()
{
const
B b1;
//b1.m_iNum = 100; //compile error
// 可以做如下转换,体现出转换为指针类型
B *b2 =
const_cast
<B*>(&b1);
// 或者左侧也可以用引用类型,如果对b2或b3的数据成员做改变,就是对b1的值在做改变
B &b3 =
const_cast
<B&>(b1);
b2->m_iNum = 200;
//fine
b3.m_iNum = 300;
//fine
}
int
main(
int
argc,
char
* argv[] )
{
foo();
return
0;
}
上面代码可运行,不会报错,错误代码已经注释 。去掉下面代码行的注释号后会报错,因为b1之不可修改。
1
//b1.m_iNum = 100; //compile error
使用const_cast可以返回一个指向非常量的指针(或引用)指向b1,就可以通过该指针(或引用)对它的数据成员任意改变。
0 0
- const_cast<type_id> (expression)
- const_cast (expression)
- C++类型转换运算符之const_cast<newtype>(expression)
- const_cast
- const_cast
- const_cast
- const_cast
- const_cast
- const_cast
- const_cast
- const_cast
- const_cast
- const_cast
- const_cast
- const_cast
- const_cast
- const_cast
- const_cast
- 2012年5月SAT香港真题解析
- 什么是MVC
- Redhat Linux安装JDK 1.7
- 8天学通MongoDB——第一天 基础入门
- error C2275: 'FILE' : illegal use of this type as an expression
- const_cast<type_id> (expression)
- hdu 4857/BestCoder Round#1 1001(拓扑排序+逆向建图)
- LINUX下的图形系统的一些资料
- js中获取URL参数的方法
- Day16(上).函数指针//socket动态库回调函数开发//泛型编程//类模板
- [转载]C#特性详解
- 值得推荐的C/C++框架和库
- 源代码管理工具——VSS详解
- 按钮点击状态