首页 > 试题广场 >

以下面的类声明为基础: base class cla

[问答题]
以下面的类声明为基础:

// base class
class Cd {  // represents a CD disk
private:
     char performers[50];
     char label[20];
     int selections;       // number of selections
     double playtime;   // playing time in minutes
public:
     Cd(char * s1, char * s2, int n, double x);
     Cd(const Cd & d);
     Cd();
     -Cd();
     void Report() const;   // reports all CD dats
     CD & operator=(const Cd & d);
};

(1)派生出一个Classic类,并添加一组char成员,用于存储指出CD中主要作品的字符串。修改上述声明,使基类的所有函数都是虚的。如果上述定义声明的某个方法并不需要,则请删除它。使用下面的程序测试您的产品:
#include <iostream>
using namespace std;
#include "classic.h"       // which will contain #include cd.b
void Bravo(const Cd & disk);
int main()
{
      Cd c1("Beatles", "Capitol", 14, 35.5);
      Classic c2 = Classic("Plano Sonata in B flat, Fantasia in C",
                                 "Alfred Brendel", "Philips", 2, 57.17);
      Cd *pod = &c1;
       cout << "Using object directly:\n";
       c1.Report();      // use Cd method
       c2.Report();      // use Classic method
       cout << "Using type cd * pointer to objects:\n";
       pcd->Report();    // use Cd method for cd object
       pcd = &c2;
       pcd->Report();    // use Classic method for classic object
       cout << "Calling a function with a Cd reference argument:\n";
       Bravo(c1);
       Bravo(c2);
       cout << "Testing assignment: ";
       Classic copy;
       copy = c2;
       copy.Report()
       return 0;
}
void Bravo(const Cd & disk)
{
      disk.Report();
}

(2)完成练习(1),但让两个类使用动态内存分配而不是长度固定的数组来记录字符串。

这道题你会答吗?花几分钟告诉大家答案吧!