C++问题: 通过怎样的方式父类的对象可以直接调用子类的成员~~,求解~~

 我来答
我试着流氓一点
推荐于2016-08-21
知道答主
回答量:4
采纳率:0%
帮助的人:3.1万
展开全部
不可以吧!
如果实在想访问,可以通过虚函数方式进行访问,比如:
class father
{
public:
virtual void* getElementsAddr()
{
return null;
}
};

class child : public father
{
public:
virtual void* getElementsAddr()
{
return &element;
}
private:
int element;
}

void main()
{
father &cFather = child();
void* pElement = cFather.getElementsAddr();
}

不知道是不是你想要的方式。
追问
嗯,为什么父类和子类的成员函数都用指针形式呢,不用可不可以~~
追答
技术上来说也可以不用,其实不管用不用指针,都没有这样编程的,可能要看你的具体应用场景来设计了。 我只是用了一个不应该用的小技巧达到了你说的目的而已。
class father
{
public:
virtual int getElementsAddr()
{
return element;
}
private:
int element;
};

class child : public father
{
public:
virtual int getElementsAddr()
{
return element;
}
private:
int element;
}

void main()
{
father &cFather = child();
void* pElement = cFather.getElementsAddr();
}
jackwind1987
推荐于2018-04-27 · TA获得超过2738个赞
知道大有可为答主
回答量:1268
采纳率:50%
帮助的人:489万
展开全部
若是子类有而父类没有的成员,不建议这种方式调用,因为无法保证父类指针或引用指向的是正确的子类对象,若不正确可能导致内存非法操作。
若是子类和父类都有的成员,这正是多态的使用方式,用虚函数就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
SomaroInaba
2012-11-14 · TA获得超过1622个赞
知道小有建树答主
回答量:1208
采纳率:0%
帮助的人:888万
展开全部
要先转换成子类
father* a = new child();
child* b = (child*)a;
b->f();
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yataokai
2012-11-14
知道答主
回答量:18
采纳率:0%
帮助的人:2.3万
展开全部
使用虚函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
悟天吴亭
2012-11-14
知道答主
回答量:24
采纳率:0%
帮助的人:10.7万
展开全部
设置友元
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式