第十五章面向对象

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;
}
View Code

2.派生类可以向基类转换,因为派生类的对象中包含基类的部分。基类不能向派生类转换。

3.派生类构造函数在初始化的时候,不仅要初始化自己的成员,还要负责初始化基类的部分,包括拷贝构造函数和移动构造函数。但是在析构函数,只负责销毁派生类自己的部分。

posted @ 2021-07-08 17:10  11YS  阅读(19)  评论(0编辑  收藏  举报