C++类指针转换

2023-06-07  本文已影响0人  雯饰太一

有如下代码:

class SimA{
public:
    SimA(){m_iA = 0;}
    ~SimA(){}
    void fun1(){ printf("simA:fun1\n");++m_iA;}
    int GetA(){return m_iA;}
private:
    int m_iA;
};

class SimB{
public:
    SimB(){m_iA = 0;};
    ~SimB(){}
    void fun2(){ printf("simB:fun2\n");}
    void fun1(){ printf("simB:fun1\n");++m_iA;}
    int m_iA;
};


//mian函数测试代码
SimA* sa = new SimA();
SimB* sb = (SimB*)sa;
sb->fun1();
printf("m_iA = %d\n",sa->GetA());

上述sb调用过程会进入自己函数的fun1中,最终sa的值将会发生修改,sa->GetA() == 1;上述代码语法正确,而且能够编译通过。

合理解释:

可以多做一些测试:

上一篇下一篇

猜你喜欢

热点阅读