抽象类 虚函数 声明与实现

声明含 virtual 的函数叫虚函数。

声明为 virtual returntype foo(参数) = 0; 的虚函数叫纯虚函数。纯虚函数只能声明,不能实现。

包含至少一个纯虚函数的类叫抽象类(纯虚类)。只包含纯虚函数的类叫纯抽象类(接口)。抽象类不能实例化(当然了,可以定义它的指针)。继承自抽象类的派生类必须全部实现基类的纯虚函数才能实例化,否则该派生类仍是抽象类。

 

普通成员函数(非virtual)可以只声明而不定义,当然了必须使用时未调用过它。析构函数声明后必须实现(因为它肯定会被调用)。构造,拷贝构造、复制函数可以声明不实现(必须有一可供使用的构造函数,其他构造函数可只声明)。

虚函数必须实现,否则编译出错。

构造函数不可以是虚函数--见这里,讲的很详细

析构函数使用多态时基类应声明为虚函数,否则析构时不会调用派生类的析构函数。当然,有的接口(纯抽象类)并没有看到它的虚析构函数,那是因为没有用到多态,若用到了多态最好声明实现虚析构函数。注意实现两字,接口类的虚析构函数要实现。

析构函数可以是纯虚函数(派生类此时必须要显式声明并实现析构函数):用途,当需要提供一个空接口时!

posted @ 2016-01-19 18:51  sfqtsh  阅读(472)  评论(0编辑  收藏  举报