1、虚函数继承,派生类赋值给基类
#include<vector>
#include<iostream>
using namespace std;
class Base {
public:
Base() { A(); };
virtual void A() {
cout << "Base::A" << endl;
}
void B() {
cout << "Base::B" << endl;
}
virtual void C() {
cout << "Base::C" << endl;
}
};
class Derive:public Base {
public:
Derive() { A(); };
virtual void A() {
cout << "D::A" << endl;
}
void derive_B() {
cout << "D::B" << endl;
}
virtual void C() {
cout << "D::C" << endl;
}
};
int main() {
Base base_test; //调用基类构造函数 输出Base::A
Derive* derive_ptr;
Derive derive_test; //创建一个派生类会先调用基类构造函数,再调用派生类构造函数 输出
//Base::A,D::A
base_ptr = &derive_test;//将派生类对象赋值给基类,会对派生类作出裁剪。也就是会去掉derive_B
base_ptr->A(); //调用的是派生类的A(); 输出D::A
return 0;
}
2