static_cast与普通的类型转换相比,有什么优势或不同
比如
- C/C++ code
int nValue = 48;char ch = static_cast<char>(nValue);
和
- C/C++ code
int nValue = 48;char ch = char(nValue);
有什么区别
[解决办法]
C风格和函数风格的显式转换视情况由下面第一个匹配的C++风格显式转换构成:
— a const_cast,
— a static_cast,
— a static_cast followed by a const_cast,
— a reinterpret_cast or
— a reinterpret_cast followed by a const_cast
这就是两者的区别,就是说char( )和( char )的底层实现不一定是static_cast<>,视转换的性质而定。
[解决办法]
http://blog.sina.com.cn/s/blog_4a84e45b0100f57m.html
提供网络博文
[解决办法]
基本变量的强制转换和static_cast是没有区别的,所以C语言里面没有static_cast。当c++引进了类的时候就需要static_cast转换了,因为它会检查类型看是否能转换,
比如
A* a= new A;
B* b = (B*)a;
这样在C++ 里面是能绝对能编译通过的,但是显然是有错误的。
另外还有一类常见的从 父类指针转换到子类。因为在某些时候需要给函数传递父类指针,但是由于设计的问题在函数里面又需要转换为子类,