| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 257 人关注过本帖
标题:C++中抽象基类能只定义数据成员而把所有成员函数定义为纯虚吗?
收藏  订阅  推荐  打印 
沿途有鬼
Rank: 2
等级:注册会员
帖子:68
积分:882
注册:2008-7-20
C++中抽象基类能只定义数据成员而把所有成员函数定义为纯虚吗?

C++中抽象基类能只定义数据成员而把所有成员函数定义为纯虚吗?
class Cd
{
private:
    char performers[50];
    char label[20];
    int selections;
    double playtime;
public:
    virtual Cd(char * s1,char * s2,int n,double x)=0;
    virtual Cd(const Cd & d)=0;
    virtual Cd()=0;
    virtual ~Cd()=0;
    virtual void Report()const=0;
    virtual Cd & operator=(const Cd & d)=0;
};

既然说抽象类不能创建对象而抽象类中的成员函数可以不提供实现,我想问:

1.那Cd::Cd(char * s1,char * s2,int n,double x)=0;在源文件中如果提供了实现,那这个构造函数的实现会起作用吗?

2.如果都不提供实现把成员函数包括构造,析构函数全部设为纯虚函数那要初始化成员的时候怎么办呢?是不是不能把复制构造函数,析构函数之类的重要函数设为纯虚呢?

3.既然析构函数和构造函数都没有继承性那把它们设置成虚函数是不是都没有任何意义,设置成纯虚函数又有什么意义呢?

[ 本帖最后由 沿途有鬼 于 2008-8-16 18:01 编辑 ]
搜索更多相关主题的帖子: 基类  定义  函数  成员  数据  
2008-8-16 17:45
promachus
Rank: 1
等级:新手上路
帖子:18
积分:302
注册:2005-11-12

1.你得想想什么时间会用到虚函数,是在对象建立后才会用到,而构造函数运行时,对象还未建立起来,所以构造函数不能声明为虚函数。
2.如果是基类,建议析构函数为虚函数。这样,无论指针指向同一类族中任意对象,当对象撤销时,系统会采用动态关联,调用相应的析构函数,对该对象进行清理工作。
3.这个,我看不用回答了吧。
2008-8-18 17:19
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.050084 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved