纯虚函数虚函数的区别

class A
{
    virtual void functionT() = 0;
};

class B
{
    virtual void functionT();
};

int main()
{
    A a;    //error C2259: 'A' : cannot instantiate abstract class
            //    'void A::functionT(void)' : is abstract
            //抽象类无法实例化的
    B b;    //无法解析的外部符号 "private: virtual void __thiscall B::functionT(void)" (?functionT@B@@EAEXXZ)
            //可编译不链接,因为这无定义,实现功能代码

    return 0;
}

虚函数可编译,因为这个时候,编译器可以认为它的实现代码存在,
即使在本类中无函数实现代码,但可以从父类中继承得到
这个在父类中找函数实现代码的过程放在链接阶段

你可能感兴趣的:(c,Class,编译器)