由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请教个static_cast vs reinterpret_cast的问题。
相关主题
问题: C++ static_cast between int and float请大侠评点一下我这个C++多重继承的程序。。。写得对不对啊。
问一个C++文件读取的问题我这个C++程序有没有什么问题啊?请指点。。。谢谢。。。
a simple question for C++ classreinterpret cast的问题
关于C++中一个Class的大小 (转载)来,出个题
c++ 是否也有class method??一个指向指针的指针的引用?
问个简单的memory allocation 的问题。一个古怪的C程序运行错误。
用数组做参数,在函数内部如何知道数组的size?a question about bitwise operation
C++编程问题,关于static member 在class中的使用,谢谢g++ default optimization error
相关话题的讨论汇总
话题: cast话题: int话题: static话题: piaddr话题: pfaddr
进入Programming版参与讨论
1 (共1页)
g***l
发帖数: 2753
1
下面这段代码中,为什么不能用static_cast把一个(float*)的指针强制转换成
(int*),而用 reinterpret_cast? 请问这是规定吗? 假设 sizeof(float) ==
sizeof(int).
[localhost]$ g++ -g sample.cpp -o sample
sample.cpp: In function ‘int main()’:
sample.cpp:13: error: invalid static_cast from type ‘float*’ to type ‘int
*’
在C中,可以这么转,gcc也会发warning,但是不会编译失败。
谢谢了。
1
2 #include
3 using namespace std;
4 int main()
5 {
6 int inumber=1000;
7 float fnumber=1234.56;
8
9 int* piaddr = &inumber;
10 float* pfaddr=&fnumber;
11 cout << "piaddr =" << piaddr< 12 cout << "pfaddr = "< 13 piaddr=static_cast(pfaddr);
14 }
15
~
X****r
发帖数: 3557
2
是规定。不同的cast用作不同目的互不重合。
static_cast关键字是C++特有的,C里并没有。C里的强制类型转换既包含了C++里的
static_cast的用途,也包含了C++里的reinterpret_cast的用途,以及其它。

int

【在 g***l 的大作中提到】
: 下面这段代码中,为什么不能用static_cast把一个(float*)的指针强制转换成
: (int*),而用 reinterpret_cast? 请问这是规定吗? 假设 sizeof(float) ==
: sizeof(int).
: [localhost]$ g++ -g sample.cpp -o sample
: sample.cpp: In function ‘int main()’:
: sample.cpp:13: error: invalid static_cast from type ‘float*’ to type ‘int
: *’
: 在C中,可以这么转,gcc也会发warning,但是不会编译失败。
: 谢谢了。
: 1

g***l
发帖数: 2753
3
I see. thanks.

【在 X****r 的大作中提到】
: 是规定。不同的cast用作不同目的互不重合。
: static_cast关键字是C++特有的,C里并没有。C里的强制类型转换既包含了C++里的
: static_cast的用途,也包含了C++里的reinterpret_cast的用途,以及其它。
:
: int

h*******s
发帖数: 8454
4
偶这几天也在学习这个,感觉挺复杂的
可以参考一下
http://stackoverflow.com/questions/2253168/dynamic-cast-in-c

int

【在 g***l 的大作中提到】
: 下面这段代码中,为什么不能用static_cast把一个(float*)的指针强制转换成
: (int*),而用 reinterpret_cast? 请问这是规定吗? 假设 sizeof(float) ==
: sizeof(int).
: [localhost]$ g++ -g sample.cpp -o sample
: sample.cpp: In function ‘int main()’:
: sample.cpp:13: error: invalid static_cast from type ‘float*’ to type ‘int
: *’
: 在C中,可以这么转,gcc也会发warning,但是不会编译失败。
: 谢谢了。
: 1

i*********n
发帖数: 58
5
static and dynamic cast is for casting up/down polymorphic types, so
compiler need to check compatibility. reinterpret cast is like C style of
cast "()variable" and you can cast anything but very dangerous unless
you are 100% sure what you are doing.
1 (共1页)
进入Programming版参与讨论
相关主题
g++ default optimization errorc++ 是否也有class method??
pointer overflow问个简单的memory allocation 的问题。
数组定义的时候,分配空间了么?用数组做参数,在函数内部如何知道数组的size?
含泪流血裸奔完整代码回答C++弱问题C++编程问题,关于static member 在class中的使用,谢谢
问题: C++ static_cast between int and float请大侠评点一下我这个C++多重继承的程序。。。写得对不对啊。
问一个C++文件读取的问题我这个C++程序有没有什么问题啊?请指点。。。谢谢。。。
a simple question for C++ classreinterpret cast的问题
关于C++中一个Class的大小 (转载)来,出个题
相关话题的讨论汇总
话题: cast话题: int话题: static话题: piaddr话题: pfaddr