Advertisement
Guest User

Untitled

a guest
Mar 31st, 2015
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.64 KB | None | 0 0
  1. #ifndef CD_H
  2. #define CD_H
  3. #include <cstring>
  4. #include <iostream>
  5. using namespace std;
  6.  
  7. class CD
  8. {
  9.     private:
  10.         char * performers;
  11.         char * label;
  12.         int selections;
  13.         double playtime;
  14.     public:
  15.         CD(const char * s1,const char * s2, int n, double x);
  16.         CD(const CD & d);
  17.         CD();
  18.         ~CD();
  19.         virtual void Report() const;
  20.         virtual CD & operator=(const CD & d);
  21.  
  22. };
  23.  
  24. #endif // CD_H
  25.  
  26. #include "Classic.h"
  27.  
  28.  
  29. Classic::Classic(const CD& cd_base, char* s):CD(cd_base)
  30. {
  31.     main_track = new char [strlen(s)+1];
  32.     strcpy(main_track, s);
  33. }
  34. Classic::Classic(const char* s, const char* perf, const char * sel, int m, double f):CD(perf, sel, m, f)
  35. {
  36.     main_track = new char [strlen(s)+1];
  37.     strcpy(main_track, s);
  38. }
  39.  
  40. Classic::Classic(const Classic & class_cd):CD(class_cd)
  41. {
  42.     main_track = new char [strlen(class_cd.main_track)+1];
  43.     strcpy(main_track, class_cd.main_track);
  44. }
  45.  
  46. Classic::Classic():CD()
  47. {
  48.     main_track = new char[strlen("Domyslny track")+1];
  49.     strcpy(main_track,"Domyslny track");
  50. }
  51.  
  52. void Classic::Report() const
  53. {
  54.     CD::Report();
  55.     cout <<"Track glowny: " << main_track << endl;
  56. }
  57.  
  58. Classic::~Classic()
  59. {
  60.     delete [] main_track;
  61. }
  62.  
  63. Classic & Classic::operator=(const Classic& class_cd)
  64. {
  65.     if(this == &class_cd)
  66.         return *this;
  67.  
  68.     CD::operator=(class_cd);
  69.     delete [] main_track;
  70.     main_track = new char [strlen(class_cd.main_track)+1];
  71.     strcpy(main_track, class_cd.main_track);
  72.     return *this;
  73. }
  74.  
  75. #ifndef CLASSIC_H
  76. #define CLASSIC_H
  77.  
  78. #include <CD.h>
  79.  
  80.  
  81. class Classic : public CD
  82. {
  83.     private:
  84.         char * main_track;
  85.     public:
  86.         Classic(const CD & cd_base, char * s);
  87.         Classic(const char* s, const char* perf, const  char * sel, int m, double f);
  88.         Classic(const Classic & class_cd);
  89.         Classic();
  90.         virtual void Report() const;
  91.         ~Classic();
  92.         Classic & operator=(const Classic & class_cd);
  93. };
  94.  
  95. #endif // CLASSIC_H
  96.  
  97. #include "CD.h"
  98.  
  99. CD::CD(const char* s1,const char* s2, int n, double x)
  100. {
  101.     performers = new char[strlen(s1)+1];
  102.     strcpy(performers, s1);
  103.     label = new char[strlen(s2)+1];
  104.     strcpy(label, s2);
  105.     selections = n;
  106.     playtime = x;
  107. }
  108.  
  109. CD::CD(const CD& d)
  110. {
  111.     performers = new char [strlen(d.performers)+1];
  112.     strcpy(performers, d.performers);
  113.     label = new char [strlen(d.label)+1];
  114.     strcpy(label, d.label);
  115.     selections = d.selections;
  116.     label = d.label;
  117. }
  118.  
  119. CD::CD()
  120. {
  121.     performers = new char[strlen("Domyslny konstruktor")+1];
  122.     strcpy(performers, "Domyslny konstruktor");
  123.     label = new char[strlen("Domyslny label")+1];
  124.     strcpy(label, "Domyslny label");
  125.     selections = 0;
  126.     playtime = 0;
  127. }
  128.  
  129. CD::~CD()
  130. {
  131.     delete [] performers;
  132.     delete [] label;
  133. }
  134.  
  135. void CD::Report() const
  136. {
  137.     cout << "Performers: " << performers << endl;
  138.     cout << "Label: " << label << endl;
  139.     cout << "Selections: " << selections <<" Playtime: " << playtime << endl;
  140. }
  141.  
  142. CD & CD::operator=(const CD& d)
  143. {
  144.     if(this == &d)
  145.         return *this;
  146.  
  147.     delete [] performers;
  148.     delete [] label;
  149.  
  150.     performers = new char [strlen(d.performers)+1];
  151.     strcpy(performers, d.performers);
  152.     label = new char [strlen(d.label)+1];
  153.     strcpy(label, d.label);
  154.     selections = d.selections;
  155.     playtime = d.playtime;
  156.     return *this;
  157. }
  158.  
  159.  
  160. #include "Classic.h"
  161. using namespace std;
  162.  
  163. int main()
  164. {
  165.  
  166.     CD *kopia = new Classic("Sonata fortepianowa B-dur, Fantazja C-moll",
  167.                          "Alfred Brendel", "Philips", 2, 57.17);
  168.     kopia->Report();
  169.  
  170.     return 0;
  171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement