首页 > 编程语言 >C++primer练习14.10-23

C++primer练习14.10-23

时间:2022-08-17 14:27:49浏览次数:59  
标签:const 23 Sales 运算符 14.10 operator return primer data

练习14.10

对于Sales_data的输入运算符来说给定下面的输入会发生什么?

(a)0-201-99999-9 10 24.95正常输入

(b)10 24.95 0-210-99999-9最后一个输入格式错误,会chongz

练习14.11

下面的Sales_data输入运算符存在错误吗?如果执行上面的输入会发生什么

istream& operator>>(istream& in,Sales_data& s)

{
double price ;

in>>s.bookNo>>s.units_sold>>price;

s.revenue=s.units_sold*price;

return in;}

错误的输入无法处理,且s的数据不匹配

练习14.13

你认为Sales_data类还应该支持哪些其他算术运算符?如果要的话请给出定义

::可以定义利润关系运算符

bool operator<(const Sales_data&a,const Sales_data&b)
{
    return a.revenue<b.revenue;
}

bool operator>(const Sales_data&a,const Sales_data&b)
{
    return a.revenue>b.revenue;
}
bool operator==(const Sales_data&a,const Sales_data&b)
{
    return a.revenue==b.revenue;
}

练习14.14

你觉得为什么调用operator+=来定义operator+比其他方法有效

::不用记那么多名字,运算符都是约定俗成的

练习14.16

为你的String类定义相等运算符和不相等运算符

bool operator==(const String&a,const String&b)
{
    return a.elements==b.elements&&a.first_free==b.first_free&&a.cap==b.cap;
}

bool operator!=(const String&a,const String&b)
{
    return !(a==b);
}

练习14.18

为你的String类定义关系运算符

bool operator<(const String&a,const String&b)
{
    return a.size()<b.size();
}
bool operator>(const String&a,const String&b)
{
    return a.size()>b.size();
}

练习14.20

为你的Sales_data类定义加法和复合赋值运算符

Sales_data& operator+=(Sales_data&a)
        {
            if(isbn==a.isbn)
            {
                units_sold+=a.units_sold;
                revenue+=a.revenue;
            }
            return *this;
        }
        

练习14.21

编写Sales_data类的+和+=运算符,使得执行实际的加法操作而+=调用+。相比于内置的,本题的有何缺点?

::会有多余开销,且没有益处

练习14.22

定义赋值运算符的一个新版本,使得我们能把一个表示ISBN的string赋值给一个Sales_data对象

    Sales_data& operator=(const std::string&a)
        {
            isbn=a;
            return *this;
        }

练习14.23

为你的StrVec类定义一个initializer_list赋值运算符

inline StrVec& StrVec::operator=(std::initializer_list<std::string> il)
{
    auto newdata = alloc_n_copy(il.begin(), il.end());
    free();
    elements = newdata.first;
    first_free = cap = newdata.second;
    return *this;
}

 

标签:const,23,Sales,运算符,14.10,operator,return,primer,data
From: https://www.cnblogs.com/yddl/p/16595009.html

相关文章

  • Redis Desktop Manager for Mac(Redis可视化工具) v2021.10.236中文版
    mac软件下载:https://mac.macsc.com/mac/2697.html?id=MzI1OTY2 RedisDesktopManagermac版是一个快速、简单、支持跨平台的RedisDB管理工具,专为Mac用户设计,基于Qt5......
  • C++primer练习14.1-9
    练习14.1在什么时候情况下重载的运算符与内置运算符有所区别?在什么时候重载的运算符又与内置运算符一样::为类设计的运算符,尽量重载的运算符含义不要改变,如+还是加法练习1......
  • 239.sliding-window-maxium 滑动窗口最大值
    采用双端队列deque,并且保证deque从前往后依次递减,并且出现在deque里面的相邻两数,其在原滑动窗口中,两数中间的数一定比这两个数小。为了保证这一点,在push_back()时,如果deque......
  • C++primer练习13.55-58
    练习13.55为你的StrBlob添加一个右值引用版本的Push_backvoidStrBlob::push_back(string&&s){data->push_back(std::move(s));}练习13.56如果sorted定义如下,会发生......
  • C-Primer-Plus-第二章-C语言概述
    第二章C语言概述参考书籍:CPrimerPlus(第6版)中文版一、前言打算跟这本书系统地学习一遍C语言,谨以此系列文章记录自己的学习之路。本文所有图片均来源于此书。二、主......
  • PCR引物设计软件primer5
    PrimerPremier5是一款分子生物学试验常用的PCR引物设计软件,下面简要介绍一下该软件的使用方法。 第一步:打开primer5软件(图1). 图1 第二步:依次点击File-->New......
  • C++primer练习13.49-54
    练习13.49为你的String类添加一个移动构造函数和一个移动赋值运算符String(String&&a):elements(std::move(a.elements)),first_free(std::move(a.first_free)),cap(st......
  • 232.implement-queue-using-stacks 用栈实现队列
    当stOut为空时,将stIn中所有元素push到stOut#include<stack>usingstd::stack;classMyQueue{public:stack<int>stIn;stack<int>stOut;MyQueue()......
  • 23届秋招美团内推推推!开始啦!!
    自我介绍本人为20届应届生,在19年秋招期间,拿到了网易、小米、美团等企业的Offer,最后和美团双向奔赴,在美团工作的这两年,可以说是收获满满,推荐大家来到美团这个温暖的大......
  • C-Primer-Plus-第一章-初识C语言
    第一章初识C语言参考书籍:CPrimerPlus(第6版)中文版一、前言打算跟着本书系统地学习一遍C语言,谨以此系列文章记录自己的学习之路。二、主要内容1.C语言起源1972年......