Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- using namespace std;
- class Bird
- {
- protected:
- //Поля:
- int age;
- string color;
- public:
- //Конструкторы:
- Bird()
- {
- cout << "Вызван конструктор по умолчанию класса Bird\n";
- age = 0;
- color = "\0";
- }
- Bird(int age, string color)
- {
- this->age = age;
- this->color = color;
- cout << "Вызван конструктор с параметрами класса Bird\n";
- }
- Bird(Bird &a)
- {
- age = a.age;
- color = a.color;
- cout << "Вызван копирующий конструктор класса Bird\n";
- }
- //Методы:
- virtual void Fly()
- {
- cout << "Я лечу!\n";
- }
- //Деструктор:
- ~Bird()
- {
- cout << "Вызван деструктор класса Bird\n";
- }
- };
- class Dove :public Bird
- {
- private:
- //Поля:
- bool brain;
- public:
- //Конструкторы:
- Dove()
- {
- cout << "Вызван конструктор по умолчанию класса Dove\n";
- }
- Dove(int age, string color, bool brain)
- {
- this->age = age;
- this->color = color;
- this->brain = brain;
- cout << "Вызван конструктор с параметрами класса Dove\n";
- }
- Dove(Dove & q)
- {
- this->age = q.age;
- this->color = q.color;
- this->brain = q.brain;
- cout << "Вызван копирующий конструктор класса Dove\n";
- }
- //Методы:
- void Fly() override
- {
- cout << "Я лечу кружась!\n";
- }
- //Деструктор:
- ~Dove()
- {
- cout << "Вызван деструктор класса Dove\n";
- }
- };
- //Пример композиции:
- class Wheels
- {
- private:
- //Поля:
- float k;
- int speed1;
- public:
- //Конструкторы:
- Wheels()
- {
- k = 0.3;
- speed1 = 0;
- cout << "Вызван конструктор по умолчанию класса Wheels\n";
- }
- Wheels(float k, int speed1)
- {
- this->k = k;
- this->speed1 = speed1;
- cout << "Вызван конструктор с параметром класса Wheels\n";
- }
- Wheels(Wheels& a)
- {
- this->k = a.k;
- this->speed1 = a.speed1;
- cout << "Вызван копирующий конструктор класса Wheels\n";
- }
- //Методы:
- void GetRealSpeed()
- {
- cout << k * speed1;
- }
- void PrintWheels()
- {
- cout << "k= " << k << endl;
- cout << "speed1= " << speed1 << endl;
- }
- //Деструктор:
- ~Wheels()
- {
- cout << "Вызван деструктор класса Wheels\n";
- }
- };
- class Car
- {
- private:
- //Поля:
- int speed;
- Wheels *koleso;
- string color;
- int cost;
- public:
- //Конструкторы:
- Car()
- {
- speed = 0;
- color = "White";
- koleso = new Wheels(0, 0);
- cout << "Вызван конструктор по умолчанию класса Car\n";
- }
- Car(string color, int speed1, double k)
- {
- this->color = color;
- koleso = new Wheels(k, speed1);
- cout << "Вызван конструктор с параметром класса Car\n";
- }
- Car(Car&a)
- {
- speed = a.speed;
- color = a.color;
- koleso = new Wheels(*(a.koleso));
- cout << "Вызван копирующий конструктор класса Car\n";
- }
- //Методы:
- void Ride()
- {
- cout << "Я двигаюсь со скороcтью: ";
- koleso->GetRealSpeed();
- cout << "\n";
- }
- void PrintAllParameters()
- {
- cout << "Speed= " << speed << "\n";
- cout << "Color: " << color << "\n";
- cout << "Параметры колеса:\n";
- koleso->PrintWheels();
- }
- //Деструктор:
- ~Car()
- {
- cout << "Вызван деструктор Car\n";
- delete koleso;
- }
- };
- int main()
- {
- setlocale(LC_ALL, "Russian");
- Car audi("Green", 200, 0.5);
- Car audi1(audi);
- audi.Ride();
- Bird*a = new Bird;
- a->Fly();
- Bird*b = new Dove;
- b->Fly();
- Car* c = new Car;
- c->Ride();
- delete a;
- delete b;
- delete c;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement