关于虚函数调用
from A
from A
from Base
#include<iostream>
using namespace std;
class Base {
virtual void method() {
cout << "from Base" << endl;//method是虚函数
}
public:
Base() { cout << "先调用父类的构造1" << endl; }
virtual ~Base() { method();
cout << "析构父类" << endl;
} //虚析构函数
void baseMethod() { //普通函数包含虚函数
method();
}
};
class A :public Base {
void method() { cout << "from A" << endl; }//一般来说添加override
public:
A() { cout << "再调用子类的构造2" << endl; } //类A的构造函数
~A() { method();
cout <<"析构子类"<< endl;
} //
};
int main(void) {
Base* base = new A;//
cout << "------" << endl;
A* a123;//创建类类型的指针不会调用类的构造函数
Base* base1;
cout << "------" << endl;
A a;
cout << "------" << endl;
base->baseMethod();//指向子类对象的父类指针 指向baseMethod方法(在父类) 该方法里面的method是虚函数
//调用from A
delete base;//先析构子类的
//再析构父类的 针对有new的情况
base = nullptr;
system("pause");
return 0;
}