联编(约束):
动态联编(类中有虚函数、有继承关系)、静态联编(发生的时间段)
多态:
在子类中重写父类的虚函数
条件:虚函数成员的父类、同名成员函数的子类、指针
虚函数表:所有的虚函数指针都在这里;子类不会继承父类虚函数表
虚指针:指向虚函数表,4字节
父类的析构函数定义为虚函数(虚析构)
class MyClass
{
public:
MyClass() {}
virtual ~MyClass() {
std::cout << "~father =====" << std::endl;
}
virtual void test() {
std::cout << "father =====" << std::endl;
}
private:
};
class MyClass2 :public MyClass
{
public:
MyClass2() {}
~MyClass2() {
std::cout << "~son =====" << std::endl;
}
void test() {
std::cout << "son =====" << std::endl;
}
private:
};
#if 0
MyClass obj;
MyClass2 obj2;
MyClass* p;
p = &obj;
p->test();
p = &obj2;
p->test();
#else
MyClass* p = new MyClass2;
p->test();
delete p;
#endif
纯虚函数:
virtual void test() =0;
抽象类:出现了一个及以上的纯虚函数的类(父类有几个纯虚函数,子类没有实现父类所有的纯虚函数,子类也是抽象类)
final:权限限制者
阻止函数重写
void test() final;//final在参数表后面
阻止类派生
class MyClass final