笔记:C++学习之旅---面向对象程序设计2

来源:互联网 发布:紫金银交易软件 编辑:程序博客网 时间:2024/06/05 16:46
笔记:C++学习之旅---面向对象程序设计2

面向对象程序设计基于三个基本概念:数据抽象、继承和动态绑定。

继承和动态绑定对程序的编写有两方面的影响:一是我们可以更容易的定义与其他类相似但不完全相同的新类:二是在使用这些彼此相似的类编写程序时,我们可以在一定程度上忽略掉它们的区别。

继承

通过继承联系在一起的类构成一种层次关系。通常在层次关系的根部有一个基类,其他类型则直接或间接的从基类继承而来,这些继承得到的类称为派生类。

在C++语言中,基类将类型相关的函数与派生类不做改变直接继承的函数区分对待。对于某些函数,基类希望它的派生类各自定义适合自身的版本,此时 基类将这些函数声明成虚函数

派生类必须通过使用类派生列表明确指出它是从哪个基类继承而来。


动态绑定

在C++语言中,当我们使用基类的引用(或指针)调用一个虚函数时将发生动态绑定。

定义派生类

派生类可以在他覆盖的函数前使用virtual关键字。C++11新标准中允许派生类显示的注明他使用某个成员函数覆盖了它的继承的虚函数。具体做法是在形参列表后面、或者在const成员函数的const关键字后面、或者在引用成员函数的引用限定符后面添加一个关键字override。

派生类使用基类的成员

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

防止继承的发生

练习15.7:
定义一个类使其实现一种数量受限的折扣策略,具体策略是:当购买书籍的数量不超过一个给定的限量时享受折扣,如果购买量一旦超过了限量,则超出的部分将以原价销售。
#include<iostream>
#include<string>
usingnamespacestd;

classQuote
{
public:
            Quote() =default;
            Quote(conststring&b,doublep) :bookNo(b), price(p){}
            stringisbn()const{returnbookNo; }
            virtualdoublenet_price(size_tn)const{returnn*price; }
            virtual~Quote() =default;

private:
            stringbookNo;

protected:
            doubleprice = 0.0;

};

classBulk_Quote:publicQuote
{

public:
            Bulk_Quote() =default;
            Bulk_Quote(conststring&b,doublep,size_tq,doubledisc) :
                        Quote(b,p), min_qty(q), discount(disc){ }
            doublenet_price(size_tn)constoverride;

private:
            size_tmin_qty = 0;
            doublediscount = 0.0;
};
doubleBulk_Quote::net_price(size_tn)const
{
            returnn*price*(n>= min_qty ? 1 - discount : 1);
}
doubleprint_total(ostream&os,constQuote&item,size_tn)
{
            doubleret =item.net_price(n);
            os<<"ISBN:"<<item.isbn()
                        <<" #sold:"<<n<<" total due:"<< ret << endl;
            returnret;
}
intmain()
{
            Quoteq("textbook", 10.60);
            Bulk_Quotebq("textbook", 10.60, 10, 0.3);
            print_total(cout, q, 12);
            print_total(cout, bq, 12);
            return0;
}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 吃虾过敏全身痒怎么办 全身过敏怎么办 痒的厉害 吃小龙虾过敏全身痒怎么办 脸过敏肿起来了怎么办 小孩对灰尘树木过敏怎么办 小孩过敏怎么办痒的很 脸皮肤过敏很痒怎么办 浅粉色绵羊皮衣不好清洗怎么办 皮料染上其他颜色怎么办 宝宝的银锁发黑怎么办 pu鞋子蹭坏了怎么办 包的油边脱胶了怎么办 pu包有点破皮怎么办 买房子不给过户怎么办 布艺床头有味道怎么办 皮革床头爆皮了怎么办 皮包用酒精擦了怎么办 床头靠背皮掉了怎么办 真皮床头爆皮了怎么办 半裙拉链往下滑怎么办 误用三氧化二砷怎么办 情侣之间感情淡了怎么办 雪纺布料刮坏了怎么办 棉麻布料坏了怎么办 主板针脚弯了怎么办?能修吗? 脸颊两侧毛孔大还有黑头怎么办 脸颊和鼻子粗毛孔大怎么办 十二时辰对照五脏养生在国外怎么办 在学校接吻怕被看到怎么办 楼房圈梁被破坏了怎么办 买了农村的房子怎么办 邻居建房不用共用墙怎么办 腿被蚂蚁咬了怎么办 火车订2票不挨着怎么办 手机全变成英文该怎么办 这些旧电脑该怎么办用英语翻译 落水已把人救出该怎么办 手机落水后已开过机怎么办? 车被洪水冲走了怎么办 感到生活无聊无事可干怎么办 邻居不除排水沟影响到自己怎么办