首页 > 编程语言 >C++ //练习 15.5 定义你自己的Bulk_quote类。

C++ //练习 15.5 定义你自己的Bulk_quote类。

时间:2024-07-13 22:27:34浏览次数:16  
标签:std const 15.5 quote price C++ Quote double size

C++ Primer(第5版) 练习 15.5

练习 15.5 定义你自己的Bulk_quote类。

环境:Linux Ubuntu(云服务器)
工具:vim

 

代码块
/*************************************************************************
	> File Name: ex15.3.cpp
	> Author: 
	> Mail: 
	> Created Time: Fri 12 Jul 2024 09:13:44 AM CST
 ************************************************************************/

#include<iostream>
using namespace std;

class Quote{
    public:
    Quote() = default;
    Quote(const std::string &book, double sales_price): bookNo(book), price(sales_price) {}
    std::string isbn() const { return bookNo; }
    
    virtual double net_price(std::size_t n) const { return n * price; }
    virtual ~Quote() = default;

    private:
    std::string bookNo;
    
    protected:
    double price = 0.0;
};

double print_total(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;
}

class Bulk_quote: public Quote{
    public:
    Bulk_quote() = default;
    Bulk_quote(const std::string& book, double p, std::size_t qty, double disc): Quote(book, p), min_qty(qty), discount(disc) {}
    double net_price(std::size_t) const override;

    private:
    std::size_t min_qty = 0;
    double discount = 0.0;
};

double Bulk_quote::net_price(size_t cnt) const{
    if (cnt >= min_qty){
        return cnt * (1 - discount) * price;
    }
    else{
        return ret * price;
    }
}

标签:std,const,15.5,quote,price,C++,Quote,double,size
From: https://blog.csdn.net/navicheung/article/details/140372468

相关文章

  • C++ //练习 15.7 定义一个类使其实现一种数量受限的折扣策略,具体策略是:当购买书籍的数
    C++Primer(第5版)练习15.7练习15.7定义一个类使其实现一种数量受限的折扣策略,具体策略是:当购买书籍的数量不超过一个给定的限量时享受折扣,如果购买量一旦超过了限量,则超出的部分将以原价销售。环境:LinuxUbuntu(云服务器)工具:vim 代码块/**************************......
  • 模型部署 - TensorRT - C++版本与Python版本应如何选择
    从性能角度来看,TensorRTC++版本和Python版本之间确实存在一些差异:C++版本性能更优:TensorRTC++版本使用了更底层的API,可以更好地利用硬件特性,进行更深层的优化。C++版本在内存管理、CPU-GPU数据传输等方面更加高效,这些都可以带来更好的推理性能。Python版本更易......
  • c++初始化列表和构造函数初始化的区别
    在C++中,初始化列表和构造函数初始化是两种不同的方法用于初始化类的成员变量。初始化列表(InitializationList):初始化列表是在构造函数的参数列表后面使用冒号(:),然后跟随着每个成员变量的初始化方式。通过初始化列表,可以在对象构造时直接为成员变量赋值,而不是在构造函数体内......
  • C++客户端Qt开发——开发环境
    一、QT开发环境1.安装三个部分①C++编译器(gcc,cl.exe……)②QTSDKSDK-->软件开发工具包比如,windows版本QTSDK里已经内置了C++的编译器(内置编译器是mingw,windows版本的gcc/g++)③QT的集成开发环境(IDE)官方提供的QTCreator最容易入门,最容易上手的方式,开箱即用,虽然QTCrea......
  • C++ 入门基础:开启编程之旅
    引言C++是一种高效、灵活且功能强大的编程语言,广泛应用于系统软件、游戏开发、嵌入式系统、科学计算等多个领域。作为C语言的扩展,C++不仅继承了C语言的过程化编程特性,还增加了面向对象编程(OOP)的支持,使得代码更加模块化、易于管理和复用。本文将带你走进C++的世界,从......
  • c++继承特点,菱形继承,访问方式,默认成员函数
    目录继承概念继承特性继承后成员访问的方式的变化子父类成员重命名派生类的默认成员函数​编辑菱形继承小tip继承概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,......
  • 05day--C++日期类的实现与取地址运算符的重载
    这里写目录标题5.3⽇期类实现6.取地址运算符重载6.1const成员函数6.2取地址运算符重载5.3⽇期类实现Date.h#pragmaonce#include<iostream>usingnamespacestd;#include<assert.h>classDate{//友元函数声明friendostream&operator<<(ostream&......
  • C++11标准库<chrono>、<future>、 <atomic>、<condition_variable>、<mutex>、<t
    目录<chrono>时间间隔duration常用的duration时间点time_point时钟system_clock&steady_clocksystem_clock代码举例steady_clock(秒表)例程:转换函数1.duration_castDescription:duration支持隐式转换的规则2.time_point_cast<thread>this_thread命名空间1.get_id()2.sleep_f......
  • C++类和对象 前篇
    C++类和对象基础部分​众所周知,C语言是一门面向过程的语言,面向过程简单来说就是直接使用各种函数和数据来解决一件事。而面向对象是谁来使用函数和数据去解决一件事。​C++是一门既可以面向对象也可以面向过程的语言,它能够兼容C语言,并且对C语言进行了许多优化升级,其中......
  • C++知识备忘及面试指导
    一、C++基础1.C和C++有什么区别?C语言C语言是纯面向过程的语言,不支持面向对象,函数名字不会被改编(函数不能重载)C语言的结构体只支持成员变量,不支持成员函数,成员没有访问控制(即没有publicprotectedprivate)C++C++是C语言的超集,同时支持面向过程和面向对象(类)函数名字编译......