赞
踩
有一个常见的c++题,就是父类和子类的构造函数和析构函数分别调用顺序:
以及父类中的函数在子类中重新实现后,父类指针指向子类后,该指针调用的函数是父类中的还是子类中的(子类的)。
通过一个例子说明:
#include <iostream> #include <vector> #include <string> #include <algorithm> class Parent { public: virtual void func() { std::cout << "Parent." << std::endl; } Parent() { std::cout << "Parent construct.\n" << std::endl; } ~Parent() { std::cout << "Parent destory.\n" << std::endl; } }; class Son : public Parent { public: void func() { std::cout << "Son." << std::endl; } Son() { std::cout << "Son construct.\n" << std::endl; } ~Son() { std::cout << "Son destory.\n" << std::endl; } }; int main(int argc, char* argv[]) { Parent *parent1 = new Parent(); // Parent construct. Parent *parent2 = new Son(); // Parent construct. Son construct. Son *son = new Son(); // Parent construct. Son construct. parent1->func(); // Parent. parent2->func(); // Son. son->func(); // Son. delete parent1; // Parent destory. delete parent2; // Parent destory. delete son; // Son destory. Parent destory. return 0; }
2024年5月11日18:39:54
今夜偏知春气暖,虫声新透绿窗纱。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。