c++ 类的语法4
测试析构函数、虚函数、纯虚函数:
void testClass5() {class Parent {public:Parent(int x) { cout << "Parent构造: " << x << endl; }~Parent() {cout << "调用Parent析构函数" << endl;}virtual string toString() { // 虚函数return "i am Parent";}virtual int getAge() const = 0; // =0 标记为纯虚函数};class Child : public Parent {private:int a;string b;public:// 调用父类构造 + 初始化子类成员Child(int x, int val, const string& s) : Parent(x), a(val), b(s) {cout << "Child构造: " << a << ", " << b << endl;}~Child() {cout << "调用Child析构函数" << endl;}string toString() override {return "i am Child";}int getAge() const override {return 18;}};Child child(10, 20, "hello");cout << "child toString:" << child.toString() << endl;cout << "child getAge:" << child.getAge() << endl;Parent* parent = &child;cout << "parent toString:" << parent->toString() << endl;cout << "parent getAge:" << parent->getAge() << endl;
}
打印:
可见,析构函数的调用顺序是和构造函数的调用顺序相反的。另外,纯虚函数有点像java的抽象方法。