Advertisement
TwITe

Untitled

Dec 23rd, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.06 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class Base {
  5. public:
  6.     virtual void print() {
  7.         cout << "In parent class";
  8.     }
  9.  
  10.     virtual void print_non_virtual_function() {
  11.         cout << "In parent class";
  12.     }
  13.  
  14. };
  15.  
  16. class Derived:public Base {
  17. public:
  18.     void print() override {
  19.         cout << "In child class";
  20.     }
  21.  
  22.     void print_non_virtual_function() override {
  23.  
  24.         cout << "In child class";
  25.     }
  26. };
  27.  
  28. int main () {
  29.     Base* baseptr = new Base; // Объект типа родительского класса
  30.  
  31.     baseptr->print(); // In parent
  32.     cout << endl;
  33.     baseptr->print_non_virtual_function(); // In parent class // Проблема решена: метод вызвался, соответствуя типу объекта
  34.     cout << endl;
  35.  
  36.     delete baseptr;
  37.     baseptr = new Derived; // Объект типа дочерного класса
  38.  
  39.     baseptr->print(); // In child class
  40.     cout << endl;
  41.     baseptr->print_non_virtual_function(); // In child class
  42.  
  43.     delete baseptr;
  44.     return 0;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement