联编(约束):
动态联编(类中有虚函数、有继承关系)、静态联编(发生的时间段)
多态:
在子类中重写父类的虚函数
条件:虚函数成员的父类、同名成员函数的子类、指针
虚函数表:所有的虚函数指针都在这里;子类不会继承父类虚函数表
虚指针:指向虚函数表,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