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

类型转换,static_cast还是reinterpret_cast?该怎么处理

2012-02-21 
类型转换,static_cast还是reinterpret_cast?类型转换,static_cast还是reinterpret_cast?classA{private:in

类型转换,static_cast还是reinterpret_cast?
类型转换,static_cast还是reinterpret_cast?
class   A
{
private:
int   i;
};

现在要有
A*   next;
next   =   static_cast <A*> (new   char[sizeof   (A*)]);//这样不行
next   =   reinterpret_cast <A*> (new   char[sizeof   (A*)]);//这样可以,好吗

[解决办法]
-_-!
[解决办法]
A* next = new A*;
[解决办法]
贴两段代码, test1.cpp 是首选. test2.cpp 也可以工作, 但没 1 好. 详细可以参考 < < C++ Code Standards > >

// test1.cpp
// vc-7_1 + xp
// cl -EHsc test1.cpp

class A {
private:
int i;
};

int main() {
char * chrs = new char[sizeof A];
void * p = chrs;
A * next = static_cast <A *> (p);
return 0;
}

-----------------------

// test2.cpp
// vc-7_1 + xp
// cl -EHsc test2.cpp

class A {
private:
int i;
};

int main() {
A * next = reinterpret_cast <A *> (new char[sizeof A]);
return 0;
}

[解决办法]
HOHO, 人在啊!

我还有个问题要问题. 你为什么要sizeof A*啊?
[解决办法]
那不是要引入一个C风格的转换? 不够爽!
[解决办法]
两个不同类的? 我没仔细想好, 直觉上有危险. 让我好好想想.
[解决办法]
Learning...
[解决办法]
恩. void *应该算明确的自然转换, 想来不会有大问题. 但你两个不同类, 有点悬啊!
[解决办法]
晕死,去重载operator new。
[解决办法]
另外请确认你了解内存对齐的基本知识。

热点排行