【发布时间】:2011-03-04 22:52:42
【问题描述】:
假设我有以下层次结构:
class A
{
public:
A()
private:
int aa;
}
class B: public A
{
public:
B()
private:
int bb;
}
class D: public B
{
public:
D()
private:
int dd;
}
当我在 main 中输入以下代码时:
D dobj;
std::cout<<"Address of D object: "<<&dobj<<std::endl;
A aobj = static_cast<A>(dobj);
A* aptr = static_cast<A*>(&dobj);
std::cout<<"Address of D object: "<<&dobj<<std::endl;
std::cout<<"Address of aptr object: "<<&aptr<<std::endl;
std::cout<<"Address of A object: "<<&aobj<<std::endl;
其输出为:
Address of dobj object: 0012FF0C
Address of dobj object: 0012FF0C
Address of aptr object: 0012FF18
Address of aobj object: 0012FF14
为什么aptr和aobj的地址不一样??他们不应该是一样的吗??
为什么dobj和aptr的地址不一样??他们不应该也一样吗?
我正在使用 VC++ 在 Windows 上进行编译。
谢谢, 德科斯托。
【问题讨论】:
标签: c++ casting type-conversion