1
0

dma.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // dma.h -- inheritance and dynamic memory allocation
  2. #ifndef DMA_H_
  3. #define DMA_H_
  4. #include <iostream>
  5. // Base Class Using DMA
  6. class baseDMA
  7. {
  8. private:
  9. char * label;
  10. int rating;
  11. public:
  12. baseDMA(const char * l = "null", int r = 0);
  13. baseDMA(const baseDMA & rs);
  14. virtual ~baseDMA();
  15. baseDMA & operator=(const baseDMA & rs);
  16. friend std::ostream & operator<<(std::ostream & os,
  17. const baseDMA & rs);
  18. };
  19. // derived class without DMA
  20. // no destructor needed
  21. // uses implicit copy constructor
  22. // uses implicit assignment operator
  23. class lacksDMA :public baseDMA
  24. {
  25. private:
  26. enum { COL_LEN = 40};
  27. char color[COL_LEN];
  28. public:
  29. lacksDMA(const char * c = "blank", const char * l = "null",
  30. int r = 0);
  31. lacksDMA(const char * c, const baseDMA & rs);
  32. friend std::ostream & operator<<(std::ostream & os,
  33. const lacksDMA & rs);
  34. };
  35. // derived class with DMA
  36. class hasDMA :public baseDMA
  37. {
  38. private:
  39. char * style;
  40. public:
  41. hasDMA(const char * s = "none", const char * l = "null",
  42. int r = 0);
  43. hasDMA(const char * s, const baseDMA & rs);
  44. hasDMA(const hasDMA & hs);
  45. ~hasDMA();
  46. hasDMA & operator=(const hasDMA & rs);
  47. friend std::ostream & operator<<(std::ostream & os,
  48. const hasDMA & rs);
  49. };
  50. #endif