大家都来讨论一下C++中的类型转换机制!!

caizhiyi123 2004-05-06 12:24:00
在学习C++的过程中,有一个问题我不太明白,就是有关类型转换的机制问题.这样的问题相信大家也见得比较多.到底类型转换是怎样实现的.我希望得到比较完整的答复!!请各位高手不吝赐教.
1.char c='a';
double d=(double)a;//or
double d=double(a);
这种简单的类型转换是怎样实现的.它们在内存中的布局会有什么变化?
2.class A
{
public:
A(){cout<<"A ctor"<<endl;}
~A(){cout<<"A dtor"<<endl;}
virtual void fn();
};
class B:public A
{
public:
B(){cout<<"B ctor"<<endl;}
~B(){cout<<"B dtor"<<endl;}
void fn();
};
int main()
{
B b;
B *p=&b;
p->fn();
(A*)(&p)->fn();//这里是怎样转化的?在内存中有何变化?
return 0;
}
3.多重继承中的路径转化如何实现?etc....



...全文
55 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wolf0403 2004-05-06
  • 打赏
  • 举报
回复
1、static_cast<double>(a);
2、static_cast<A*>(p)->fn();
3、向上:static_cast;向下:dynamic_cast(RTTI)

内存布局不清楚。
zhouqingyuan 2004-05-06
  • 打赏
  • 举报
回复
去看看《inside the c++ object model》,里面讲了一些,尽量看,能知道多少就多少,再深入下去,就不必了吧,毕竟又不是研究。
sharkhuang 2004-05-06
  • 打赏
  • 举报
回复
向下是比较危险的!你要清楚知道是否能向下!
xjl999 2004-05-06
  • 打赏
  • 举报
回复
学习
Jinhao 2004-05-06
  • 打赏
  • 举报
回复
接上
1、
static_cast<T>(a); == T(a);
布局就不用说了吧

3、
static_cast<>对指针进行转换时,只能对有继承关系的类的指针进行转换。

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧