zoukankan      html  css  js  c++  java
  • C++ 类2

    • 继承: 联系一起的类有层次关系。
    • 基类: 层次关系的根部
    • 派生类: 

    基类负责定义在层次关系中所以类共同拥有的成员,派生类定义其各种特有的成员。

    基类类型相关的函数, 派生类不做改变直接继承的函数

    某些函数基类希望派生类个字定义适合自身的版本,此时基类就将这些函数声明成虚函数。

    class Quote
    {
    public: 
        string isbn() const;
        virtual double net_price(size_t n) const;
    };
    

      派生类必须通过使用类派生列表,指明从哪个基类中继承而来。

    class Bulk_quote: public Quote{
    public: 
        double net_price(size_t) const override;
    };
    

      派生类必须重新定义虚函数进行声明。

    double print_total(ostream & os, const Quote & item, size_t n)
    {
        
        double ret=item.net_price(n);
        os<< item.isbn()<<n<<"total_due"<<ret<<endl;
        return ret;
    }
    

      可以使用 print_total(cout, basic, 20);// Quote 类型

                           print_total(cout, bulk, 20);// Bulk_quote 类型

    item 形参是基类的引用。因此函数运行版本由实参决定,在运行时选择函数的版本, 所以动态绑定, 运行时绑定()

    基类中通常定义虚析构函数。

    virtual 函数,派生类必须要重新定义。 覆盖基类继承来的旧定义。

    基类希望派生类有权访问, 同时禁止其他访问, protected.

    定义派生类: 使用派生列表, 基类前可有三种访问说明符: public, private, protected

    作用是控制派生类从基类继承的成员是否对派生类用户可见。

    public: 基类的公有成员也是派生类接口的组成部分。

    派生类对象:

    派生类自己定义的(非静态)成员子对象;

    一个与该派生类继承的基类对应的子对象;

    bulk_quota  有四个数据元素: 从quote 继承的bookNo, 和price 数据成员,以及bulk_quote 自己的min_qty 和discount

    Quote item;

    Bulk_quote bulk;

    Quote * p= & item;// p 指向quote 对象

    p= & bulk;// p 指向bulk 的quote 部分

    Quote & r=bulk;// r 绑定到bulk 的quote 部分;把派生类对象的引用指针用在需要基类引用指针的地方。

    派生类必须要使用基类的构造函数初始化它的基类部分。

     Bulk_quote(const string & book, double p, size_t qty, double disc):

    Quote(book, p),

    min_qty(qty), discount(disc){}

    };

    派生类可以访问基类的公有成员和受保护成员。。

    如果基类定义类静态函数, 则在整个继承体系同只存在该成员唯一的定义。

    虚函数的调用可能在运行时才被解析。

  • 相关阅读:
    PHP中feof()函数的猜测
    PHP curl函数模拟爬虫(操作cookie)
    django发音
    Nginx出现“413 Request Entity Too Large”错误解决方法
    Python开发利器WingIDE破解方法
    开启Apache mod_rewrite
    LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
    python 正则学习
    php定时执行任务
    命令行CURL教程[转载]
  • 原文地址:https://www.cnblogs.com/fanhaha/p/7426126.html
Copyright © 2011-2022 走看看