注册 登录
编程论坛 C++教室

C++中抽象基类能只定义数据成员而把所有成员函数定义为纯虚吗?

沿途有鬼 发布于 2008-08-16 17:44, 942 次点击
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.既然析构函数和构造函数都没有继承性那把它们设置成虚函数是不是都没有任何意义,设置成纯虚函数又有什么意义呢?

[[it] 本帖最后由 沿途有鬼 于 2008-8-16 18:00 编辑 [/it]]
1 回复
#2
xlh52252008-08-16 19:13
让你看 Effective C++,你就是不看!都是同一类问题...
1