标题:请教各位一个小问题
只看楼主
ilikefish1
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-1-25
 问题点数:0 回复次数:2 
请教各位一个小问题
virtual void sendDown(Packet *p)=0;

令函数=0是什么意思,查了好多资料,查不到,请各位指点下,谢谢
搜索更多相关主题的帖子: void 资料 
2006-01-25 01:00
RL720
Rank: 1
等 级:新手上路
帖 子:148
专家分:0
注 册:2005-11-6
得分:0 
纯虚函数

纯虚函数是一种特殊的虚函数,它的一般格式如下:

class <类名>

{

virtual <类型><函数名>(<参数表>)=0;



};

在许多情况下,在基类中不能对虚函数给出有意义有实现,而把它说明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。下面给出一个纯虚函数的例子。

#include

class point

{

public:

point(int i=0, int j=0) { x0=i; y0=j; }

virtual void set() = 0;

virtual void draw() = 0;

protected:

int x0, y0;

};

class line : public point

{

public:

line(int i=0, int j=0, int m=0, int n=0):point(i, j)

{

x1=m; y1=n;

}

void set() { cout<<"line::set() called.\n"; }

void draw() { cout<<"line::draw() called.\n"; }

protected:

int x1, y1;

};

class ellipse : public point

{

public:

ellipse(int i=0, int j=0, int p=0, int q=0):point(i, j)

{

x2=p; y2=q;

}

void set() { cout<<"ellipse::set() called.\n"; }

void draw() { cout<<"ellipse::draw() called.\n"; }

protected:

int x2, y2;

};

void drawobj(point *p)

{

p->draw();

}

void setobj(point *p)

{

p->set();

}

void main()

{

line *lineobj = new line;

ellipse *elliobj = new ellipse;

drawobj(lineobj);

drawobj(elliobj);

cout<

setobj(lineobj);

setobj(elliobj);

cout<<"\nRedraw the object...\n";

drawobj(lineobj);

drawobj(elliobj);

}

抽象类

带有纯虚函数的类称为抽象类。抽象类是一种特殊的类,它是为了抽象和设计的目的而建立的,它处于继承层次结构的较上层。抽象类是不能定义对象的,在实际中为了强调一个类是抽象类,可将该类的构造函数说明为保护的访问控制权限。

抽象类的主要作用是将有关的组织在一个继承层次结构中,由它来为它们提供一个公共的根,相关的子类是从这个根派生出来的。

抽象类刻画了一组子类的操作接口的通用语义,这些语义也传给子类。一般而言,抽象类只描述这组子类共同的操作接口,而完整的实现留给子类。

抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出。如果派生类没有重新定义纯虚函数,而派生类只是继承基类的纯虚函数,则这个派生类仍然还是一个抽象类。如果派生类中给出了基类纯虚函数的实现,则该派生类就不再是抽象类了,它是一个可以建立对象的具体类了。


2006-01-25 01:21
ilikefish1
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-1-25
得分:0 
回复很快又详尽,多谢多谢!!!
2006-01-25 02:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-43924-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047203 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved