c++的子类与父类的调用

an04341 2010-11-23 09:50:04
请教大侠!
现在我编的一个程序,就是父类的成员函数想要调用子类成员函数的结果,有什么办法可行吗?
有方法的能给个代码不?
拜谢!
...全文
115 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gules 2010-11-23
  • 打赏
  • 举报
回复
同意楼上两位的代码,最好两位的代码综合一下:即写成纯虚函数且在保护或私有访问控制段中。

实际上楼主的需求,就是“模板方法”这个设计模式。
zj0615046 2010-11-23
  • 打赏
  • 举报
回复
学习中 ........
qq120848369 2010-11-23
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

class Father
{
public:
void f()
{
beCalled();
}

virtual ~Father()
{

}

private:
virtual void beCalled()
{
cout<<"Father called"<<endl;
}
};

class Child : public Father
{
public:
virtual ~Child()
{

}

private:
virtual void beCalled()
{
cout<<"Child called"<<endl;
}
};

int main()
{
Father *p=new Child();
p->f(); //Child

Child a;
a.f(); //Child

delete p;

//////////////////////////////////////////////////////////////////////////

p=new Father;
p->f(); //Father

Father b;
b.f(); //Father

delete p;

return 0;
}
luciferisnotsatan 2010-11-23
  • 打赏
  • 举报
回复
父类里写个纯虚函数,调用该纯虚函数。
子类里实现这个函数
ryfdizuo 2010-11-23
  • 打赏
  • 举报
回复
通过虚函数机制吧。
class Father
{
public:
virtual void beCalled() = 0;
virtual f(){
beCalled();
}
};

class Child : public Father
{
public:
/*reimpl*/
virtual void beCalled() {
//do some stuff.
}
};
wanghang8888 2010-11-23
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

class Father
{
virtual void Becall()
{
cout<<"father becall"<<endl;
}
public:
void f()
{
Becall();
}
};

class Child:public Father
{
virtual void Becall()
{
cout<<"child becall"<<endl;
}
};

int main()
{
Father *p=new Child;
p->f();
delete p;
return 0;
}
skyxfire 2010-11-23
  • 打赏
  • 举报
回复
建议看看类工厂

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧