我有这段代码:
#include <iostream>
class A
{
public:
A() : m_i(0) { }
protected:
int m_i;
};
class B
{
public:
B() : m_d(0.0) { }
protected:
double m_d;
};
class C : public A, public B
{
public:
C() : m_c('a') { }
private:
char m_c;
};
int main()
{
C d;
A *b1 = &d;
B *b2 = &d;
std::cout << (long)b1 << std::endl <<(long)b2<< std::endl;
}
编译并运行后,它会生成以下输出:
140734705182320
140734705182328
为什么指向同一地址(&d)的不同指针具有不同的值尚不完全清楚。
提前致谢。
b1
指向一个A
对象,b2
指向一个B
对象。两个类都不是彼此的子类型,因此也不能指向彼此的子对象。 - user395760void*
而不是long
,以便打印。 - Keith Thompson