The code: has made calls to private member via object pointer

JoshuaLi JoshuaLi 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#include <iostream>
using std::cout;
using std::endl;

class A
{
public:
virtual void foo1(){cout<<"A::foo1()"<<endl;}
private:
virtual void foo(){cout<<"A::foo()"<<endl;}
};

class B:private A
{
private:
virtual void foo1(){cout<<"B::foo1()"<<endl;}
public:
virtual void foo(){cout<<"B::foo()"<<endl;}
};

int main()
{
B b;
A *a=(A *)&b;
a->foo1();

A a1;
B *b1=(B *)&a1;
b1->foo();

return 0;
}


/*
The code above makes calls to private member via object pointer, pls explain why.

This question is mentioned first in the following link, thank the original initiator.

http://expert.csdn.net/Expert/topic/1307/1307940.xml?temp=.5337946
*/
...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
JoshuaLi
VC/MFC 16,550 成员 421,606 内容