Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string>
- class Part{
- public:
- static unsigned int id;
- int ID;
- public:
- virtual void Print()=0;
- };
- unsigned int Part::id=0;
- class Engine : public Part{
- public:
- Engine(){
- id++;
- this->ID=id;
- };
- void Print()
- {std:: cout <<
- "Engine" << std :: endl;}
- };
- class Door : public Part{
- public:
- Door(){ id++;
- this->ID=id;};
- void Print()
- {std::cout<<"Door"<< std::endl;}
- };
- class Suspension : public Part {
- public:
- Suspension(){ id++;
- this->ID=id;};
- void Print()
- {std::cout <<
- "Suspension" << std::endl;}
- };
- class Car{
- private:
- int doors_number;
- public:
- Part **parts;
- public:
- Car(int doors_number_) {
- this->doors_number=doors_number_;
- parts = new Part *[2+doors_number_];
- parts[0] = new Suspension;
- parts[1] = new Engine;
- for(int j=2;j<2+doors_number_;j++)
- {
- parts[j]= new Door;
- }
- };
- Car(Car &obj){
- this->doors_number=obj.doors_number;
- this->parts = new Part *[2+this->doors_number];
- this->parts[0]=obj.parts[0];
- this->parts[1]=obj.parts[1];
- for(int j=2;j<2+this->doors_number;j++)
- {
- this->parts[j]= obj.parts[j];
- }
- }
- void Print() {
- for (int j = 0; j <2+doors_number; j++) {
- parts[j]->Print();
- };
- };
- ~Car()
- {
- for(int i=0;i<2+doors_number;++i){
- delete[] parts[i];
- }
- delete[] parts;
- };
- };
- int main(){
- Car c(2);
- c.Print();
- Car volvo(c);
- volvo.Print();
- std::cout<<"dupa"<<volvo.parts[2]->ID;
- return 0;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement