放分:你怎么用虚函数和纯虚函数?

jerry921 2002-09-05 03:23:55
已经9千多分了,不想到一万分。
...全文
148 61 打赏 收藏 转发到动态 举报
写回复
用AI写文章
61 条回复
切换为时间正序
请发表友善的回复…
发表回复
jerry921 2002-09-09
  • 打赏
  • 举报
回复
人多分少啊,没能多给大家几分,见谅了。
zhou_cj 2002-09-08
  • 打赏
  • 举报
回复
你看看C++ BUILDER里面写的空间都是用纯虚函数实现的
xuhaifengwwx 2002-09-08
  • 打赏
  • 举报
回复
纯虚函数是泻药,
虚函数是.............
================================================================

CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!

★ 浏览帖子速度极快![建议系统使用ie5.5以上]。 ★ 多种帖子实现界面。
★ 保存帖子到本地[html格式]★ 监视您关注帖子的回复更新。
★ 可以直接发贴、回复帖子★ 采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录!
★ 支持在线检测程序升级情况,可及时获得程序更新的信息。

★★ 签名 ●
可以在您的每个帖子的后面自动加上一个自己设计的签名哟。

Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
Http://www.ChinaOK.net/csdn/csdn.exe [自解压]

xuhaifengwwx 2002-09-08
  • 打赏
  • 举报
回复
纯虚函数用于抽象类,虚函数用于可供继承具体类当中。
================================================================

CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!

★ 浏览帖子速度极快![建议系统使用ie5.5以上]。 ★ 多种帖子实现界面。
★ 保存帖子到本地[html格式]★ 监视您关注帖子的回复更新。
★ 可以直接发贴、回复帖子★ 采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录!
★ 支持在线检测程序升级情况,可及时获得程序更新的信息。

★★ 签名 ●
可以在您的每个帖子的后面自动加上一个自己设计的签名哟。

Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
Http://www.ChinaOK.net/csdn/csdn.exe [自解压]

lisding 2002-09-08
  • 打赏
  • 举报
回复
提供一个公共接口,其他的类可从该接口派生有具体功能的类。

纯虚函 数没有用过,只是在考试的时候从老师那里摘抄过来,派生自己的类!

up!
sky_color 2002-09-08
  • 打赏
  • 举报
回复
果然是人多嘴杂,看到我头有些大。看来还要继续修炼呀。
elvahuang 2002-09-08
  • 打赏
  • 举报
回复
good!
我想说的大家都说了
还知道了我不知道的东东
谢谢
eastsun 2002-09-08
  • 打赏
  • 举报
回复

学生* p学生1 = new 大学生;
delete p学生1;
如果不定义学生类的析构函数为虚函数。那么“delete p学生1”将调用学生类的析构函数,而不是大学生类的析构函数。可不就出错了吗?
eastsun 2002-09-08
  • 打赏
  • 举报
回复

如果一个类只想起一个样子作用,比如在多继承中为了区分不同父类。就可以用到纯虚函数。另外,有的时候,基础类告诉要做什么,但具体做的时候,可能基础类中缺乏条件(或者条件是要到派生类才明确的),基础类只提供一个统一的接口体系。这也可以用纯虚函数。
而一般的虚函数在一般的类中也可以定义。好处很多。比如析构函数用虚函数。这样即使你用一个父类指针调用实际是一个派生类对象,在DELETE的时候,就不会出现错误。否则就会出错误。
假设你建立了一个指针队列,规定队列中每个指针指向某个“学生对象”,学生是基本类。而实际上那些具体的指针可能实际指向的是“大学生”、“中学生”这些派生类的对象。当你要清除这个队列的时候,要DELETE各个对象。如果你的“学生::~学生( )”函数是一个虚函数,就不会出现错误。而如果不是虚函数。就会出错。比如你在大学生类中规定了一个属性对象:导师,那么这个导师在析构的时候是没有析构,也没有删掉的。就出错了。
怎么能说没有用呢?

eastsun 2002-09-08
  • 打赏
  • 举报
回复

如果一个类只想起一个样子作用,比如在多继承中为了区分不同父类。就可以用到纯虚函数。另外,有的时候,基础类告诉要做什么,但具体做的时候,可能基础类中缺乏条件(或者条件是要到派生类才明确的),基础类只提供一个统一的接口体系。这也可以用纯虚函数。
而一般的虚函数在一般的类中也可以定义。好处很多。比如析构函数用虚函数。这样即使你用一个父类指针调用实际是一个派生类对象,在DELETE
sandrowjw 2002-09-08
  • 打赏
  • 举报
回复
虚函数是变戏法、糊弄人用的,纯虚函数倒是好东西,设计的时候一下子想不起该写什么代码的,就让它等于0了。
geeksky 2002-09-08
  • 打赏
  • 举报
回复
继承时用,给分
笑面佛_正版 2002-09-08
  • 打赏
  • 举报
回复
我只是来骗分的
maofeng206 2002-09-08
  • 打赏
  • 举报
回复
对于纯虚函数,子类只继承它的接口,虚函数即可以继承它的接口,也可以继承它的实现
ice1010 2002-09-08
  • 打赏
  • 举报
回复
纯虚函数是一个抽象类的实现.虚函数是多态的实现.
Lute 2002-09-07
  • 打赏
  • 举报
回复
纯虚函数一般是用于总的基类,用于定义一套统一的接口(给我的感觉像是
庵们的原始人祖先给庵们了相似的鼻子,眼睛和耳朵),而虚函数则用于动态绑定。
netbian 2002-09-07
  • 打赏
  • 举报
回复

关注,学习
panther8888 2002-09-07
  • 打赏
  • 举报
回复
纯虚函数是用于抽象类的,是为类广告族定义一个统一的接口,抽象类本身不能实例化,只能通过定义其非抽象派生类才能实例化,虚函数一般用于对象的动态绑定。
dsangvei 2002-09-07
  • 打赏
  • 举报
回复
书上的。
stidio_zhougang 2002-09-07
  • 打赏
  • 举报
回复
多态性虽然是从基类引申出来的,但是要让其动态识别还是要指明它到底引用的是那个派生类。如果延伸到设计模式我觉得完全可以这样:
1,建立一个抽象类,实现抽象功能;
2,在此抽象类的基础上派生出一个功能实现类;
3,最后实现一个具体应用类;
借用上面的例子:
class Stack //抽象类
{
public:
virtual void puch (char c) =0;
virtual char pop()=0;
};
class Array_stack:public Stack //功能实现类
{
char *p;
int max_size;
int top;
public:
Array_stack(int s);
~Array_stack();
void push(char c);
char pop();
};
class Application //具体应用类
{
Stack *pApp;
public:
Application(Stack *pInit);
~Application();
//功能函数
void f();//内部通过pApp来实现动态识别;
};
这种思想是完全的面向对象的实现,比把函数写在外面,本人觉得要好一些,并且对于大的工程,或者具体应用非常繁杂的这种项目非常有益,比如说用COM口控制设备,他每次不同的都是COM口写不同的控制字,而其他两部分非常简单。
加载更多回复(41)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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