Advertisement
Guest User

Untitled

a guest
Jan 19th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.79 KB | None | 0 0
  1. #include<iostream>
  2. #include<string>
  3.  
  4. class Part{
  5. public:
  6.    static unsigned int id;
  7.    int ID;
  8. public:
  9.    virtual void Print()=0;
  10. };
  11. unsigned int Part::id=0;
  12.  
  13. class Engine : public Part{
  14. public:
  15.     Engine(){
  16.         id++;
  17.         this->ID=id;
  18.     };
  19.    void Print()
  20.     {std:: cout <<
  21.                 "Engine" << std :: endl;}
  22. };
  23.  
  24. class Door : public Part{
  25.  
  26. public:
  27.     Door(){ id++;
  28.         this->ID=id;};
  29.     void Print()
  30.     {std::cout<<"Door"<<  std::endl;}
  31. };
  32.  
  33. class Suspension : public Part {
  34. public:
  35.     Suspension(){ id++;
  36.         this->ID=id;};
  37.     void Print()
  38.     {std::cout <<
  39.                "Suspension" << std::endl;}
  40. };
  41. class Car{
  42. private:
  43.     int doors_number;
  44. public:
  45.     Part **parts;
  46. public:
  47.     Car(int doors_number_) {
  48.         this->doors_number=doors_number_;
  49.         parts = new Part *[2+doors_number_];
  50.  
  51.         parts[0] = new Suspension;
  52.         parts[1] = new Engine;
  53.         for(int j=2;j<2+doors_number_;j++)
  54.         {
  55.             parts[j]= new Door;
  56.         }
  57.  
  58.     };
  59.     Car(Car &obj){
  60.         this->doors_number=obj.doors_number;
  61.         this->parts = new Part *[2+this->doors_number];
  62.         this->parts[0]=obj.parts[0];
  63.         this->parts[1]=obj.parts[1];
  64.         for(int j=2;j<2+this->doors_number;j++)
  65.         {
  66.             this->parts[j]= obj.parts[j];
  67.         }
  68.     }
  69.  
  70.     void Print() {
  71.         for (int j = 0; j <2+doors_number; j++) {
  72.  
  73.             parts[j]->Print();
  74.  
  75.         };
  76.     };
  77.         ~Car()
  78.         {
  79.             for(int i=0;i<2+doors_number;++i){
  80.                 delete[] parts[i];
  81.             }
  82.             delete[] parts;
  83.         };
  84.  
  85.  
  86.     };
  87.  
  88. int main(){
  89.  
  90.  
  91.     Car c(2);
  92.     c.Print();
  93.     Car volvo(c);
  94.     volvo.Print();
  95.  
  96.     std::cout<<"dupa"<<volvo.parts[2]->ID;
  97.     return 0;
  98. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement