1 多态性
#include<iostream> class animal { public: virtual void breath() { std::cout<<"animal breath"<<std::endl; } }; class fish:public animal { public: void breath() { std::cout<<"fish breath"<<std::endl; } }; int main() { fish fh; animal *ani; ani = &fh; fh.breath(); }
当派生类对象的地址 传给 基类对象的指针,会怎么样?
如果基类的函数是虚函数(virtual)
派生类重新定义了该函数,则调用派生类的函数;否则调用基类的函数。
如果基类的函数不是虚函数
(注意指针指向基类)无论如何调用基类函数
2 对派生类初始化,那么基类的初始化列表怎样进行?
class Item_bulk:public Item_base { public: Item_bulk(int min_qty,double discount,std::string book,double salesprice):Item_base(book,salesprice),Discount(discount), Min_qty(min_qty){} void DiscountWay(int book_amount) { if (book_amount>=Min_qty) price = price*Discount; } private: double Discount; int Min_qty; };
Item_base为基类。在派生类的初始化列表里将其初始化。黑体字所示。