纯虚函数: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();//指针解引用访问
}

虚函数要点

相关文章: