小编use*_*951的帖子

为什么指向同一个对象的指针有不同的值?

我有这段代码:

#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;
}
Run Code Online (Sandbox Code Playgroud)

编译并运行时,它会产生以下输出:

140734705182320
140734705182328
Run Code Online (Sandbox Code Playgroud)

不完全清楚为什么指向同一地址(&d)的不同指针具有不同的值.

提前致谢.

c++ pointers memory-address

10
推荐指数
1
解决办法
600
查看次数

标签 统计

c++ ×1

memory-address ×1

pointers ×1