4、继承中构造和析构顺序.cpp 778 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. //4.6.4 继承中构造和析构顺序
  2. //子类继承父类后,当创建子类对象,也会调用父类的构造函数
  3. //问题:父类和子类的构造和析构顺序是谁先谁后?
  4. #include <iostream>
  5. class Base
  6. {
  7. public:
  8. Base()
  9. {
  10. std::cout << "Base的构造函数" << std::endl;
  11. }
  12. ~Base()
  13. {
  14. std::cout << "Base的析构函数" << std::endl;
  15. }
  16. };
  17. class Son :public Base
  18. {
  19. public:
  20. Son()
  21. {
  22. std::cout << "Son的构造函数" << std::endl;
  23. }
  24. ~Son()
  25. {
  26. std::cout << "Son的析构函数" << std::endl;
  27. }
  28. };
  29. void test01()
  30. {
  31. //Base b;
  32. //继承中的构造和析构顺序如下:
  33. //先构造父亲,再构造子类,析构的顺序和构造的顺序相反
  34. Son s;
  35. }
  36. int main()
  37. {
  38. test01();
  39. system("psuse");
  40. return 0;
  41. }
  42. //继承中 先调用父类构造函数,再调用子类构造函数,析构顺序与构造相反