第十五章面向对象
1.基类中使用虚函数时,以引用的方式调用,可以动态绑定
#include <iostream> class Quote { public: std::string isbn() const; virtual double net_price(std::size_t n) const; }; class Bulk_quote : public Quote { public: double net_price(std::size_t) const override; } double print_toatal(ostream &os, const Quote &item, size_t n) { double ret = item.net_price(n); os << "ISBN: " << item.isbn() << "# sold: " << n << " total due: " << ret << endl; return ret; } int int main(int argc, const char** argv) { Quote basic; Bulk_quote bulk; print_toatal(cout, basic, 20); //调用Quotede net_price print_toatal(cout, bulk, 20); //调用Bulc_quotede net_price return 0; }
2.派生类可以向基类转换,因为派生类的对象中包含基类的部分。基类不能向派生类转换。
3.派生类构造函数在初始化的时候,不仅要初始化自己的成员,还要负责初始化基类的部分,包括拷贝构造函数和移动构造函数。但是在析构函数,只负责销毁派生类自己的部分。