纯虚函数:virtual void <name>() = 0; 虚函数:virtual void <name>() ; 抽象类:含有纯虚函数的类;抽象类不能实例化; 继承:继承于抽象类的非抽象类需要实现继承的纯虚函数;其它的会被子类自动继承,实不实现不重要。 虚函数的特点:当指针访问成员函数时,总是访问new 所归属的类;使用时需特别注意函数调用过程,其是否是自己想要调用的函数。 访问基类的虚函数:一般变量正常访问基类的虚函数,即表示可以通过域作用符::及.运算符访问;对于指针变量,可以解引用转为一般变量访问。 例子: class A { public: A()=default; ~A() = default; virtual void tt() = 0; void xx() {}; }; class B:public A { public: B() = default; ~B() = default; virtual void tt() { cout << “B” << endl; } }; class C :public B { public: C() = default; ~C() = default; virtual void tt() { cout << “C” << endl; } };
int main() { B b; C c; C *cr = &c; cout << "C正常访问基类B虚函数:" << endl; ((B)c).tt();//正常访问 cout << "C指针正常访问基类B虚函数:" << endl; ((B*)cr)->tt();//指针正常访问 cout << "C指针解引用访问基类B虚函数:" << endl; ((B)(*cr)).tt();//指针解引用访问 }