首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

static_cast 能改变一个对象的const属性吗?该怎么解决

2012-03-01 
static_cast 能改变一个对象的const属性吗?1《C++捷径教程》19.2.2节说:无论是dynamic_cast,reinterpret_cas

static_cast 能改变一个对象的const属性吗?
1   《C++捷径教程》19.2.2节说:无论是dynamic_cast,   reinterpret_cast还是static_cast,   都不能改变一个对象的const属性。可是我测试的时候发现static_cast好像可以修改啊?是我哪个地方做的有问题?

我的测试程序如下:

#include   <iostream>
using   namespace   std;

void   f(const   int   &p)
{
//int   &v   =   (int)p;
int   &v   =   static_cast <int> (p);
v   =   100;
return;
}

int   main(int   argc,   char*   argv[])
{
int   x   =   99;
cout   < <   x   < <   endl;
f(x);
cout   < <   x   < <   endl;
return   0;
}

2   另外,是不是const_cast只能转换const指针类型阿?
我要是写这样的程序int   &v   =   const_cast <int> (p);;,编译就会得到以下错误
error   C2440:   'const_cast '   :   cannot   convert   from   'const   int '   to   'int '

[解决办法]
const int&去掉const不就是int&
int &v = static_cast <int> (p);
改成
int &v = const_cast <int&> (p);
[解决办法]
有专门的const_cast来作你的需求
[解决办法]
const_cast <> 专门干这事的
[解决办法]
GCC下编译有问题。
[解决办法]
vc2003和bcc下确实能编译并且能修改原来的引用值。

热点排行