首页 > 编程语言 >C++primer练习14.1-9

C++primer练习14.1-9

时间:2022-08-17 10:57:36浏览次数:63  
标签:14.1 revenue sold Sales C++ 运算符 units primer data

练习14.1

在什么时候情况下重载的运算符与内置运算符有所区别?在什么时候重载的运算符又与内置运算符一样

::为类设计的运算符,尽量重载的运算符含义不要改变,如+还是加法

练习14.2

为Sales_data编写重载的输入,输出,加法和复合赋值运算符

    std::istream& operator>>(std::istream& in,Sales_data&a)
        {
            double p;
            in>>a.isbn>>a.units_sold>>p;
            a.revenue=(a.units_sold*p);
            return in;
        }
        std::ostream& operator<<(std::ostream& ot,Sales_data&a)
        {
            ot<<a.isbn<<a.units_sold<<a.revenue<<std::endl;
            return ot;
        }
Sales_data operator+(Sales_data&a,Sales_data&b)
{
    Sales_data c;
    if(a.isbn==b.isbn){
    c.units_sold=(a.units_sold+b.units_sold)/2;
    c.revenue=a.revenue+b.revenue;}
    return c;
}
Sales_data& operator+=(Sales_data&a)
        {
            if(isbn==a.isbn)
            {
                units_sold=(units_sold+a.units_sold)/2;
                revenue=revenue+a.revenue;
            }
            return *this;
        }

练习14.3

string和vector都定义了重载的==以比较各自的对象,假设svec1和sevc2是存放string的vector,确定下面的表达式分别使用了哪个版本的==?

(a)"cobble" == "stone"内置的

(b)svec1[0]==svec2[0] string的

(c)svec1==svec2 vector的

(d) "svec1[0] =="stone" string的

练习14.4

如何确定下列运算符是否是类的成员?

(a)%非成员

(b)%=成员

(c)++成员

(d)->成员

(e)<<成员

(f)&&非成员且不该重载

(g)==非成员

(h)()不该重载

当运算符是二元且位置可以对称进行调换就设非成员

练习14.5

在之前编写了下列类的某一个框架,请问在这个类应该定义重载运算符吗?如果是,请写出

(a) Book::输出,输入

(b)Date::输出,输入,赋值

(c)Employee::输出,输入

其它不建议

练习14.6

为Sales_data添加输出运算符

看14.2

练习14.7

为String类定义输出运算符

ostream& operator<<(ostream& ot,String&a)
{
    for(auto d=a.elements;d!=a.first_free;++d)
    ot<<*d;
return ot; }

练习14.8

为你曾经选择的类,定义输出运算符

如(14.7)

练习14.9

 

为你的Sales_data定义输入运算符

 std::istream& operator>>(std::istream& in,Sales_data&a)
        {
            double p;
     
      in>>a.isbn>>a.units_sold>>p;
         if(in)
            {
            a.revenue=(a.units_sold*p);
            return in;}
      else
        {a=Sale_data();
        return in;}
}

标签:14.1,revenue,sold,Sales,C++,运算符,units,primer,data
From: https://www.cnblogs.com/yddl/p/16594264.html

相关文章

  • C++ typeid获取类型信息
    #include<iostream>#include<typeinfo>intmain(){inti;conststd::type_info&info=typeid(int);std::cout<<"typeid"<<info.name()<<std::......
  • C++ beginner(2)- variable
    initializationintx{};//xisfilledwithzeroes,sox==0intx{123};intx(123);inta,b=123,c{},d{456},e(789);int*x,y,z;==int*x;inty;int......
  • C++ 调整终端界面的大小
    #include<iostream>#include<string>#include<windows.h>#defineWIDTH40#defineHEIGHT15usingnamespacestd;voidinit(){//初始化终端界面char......
  • uec++ 1天
    用来让不是商店下载的ue进行注册        ufunction(exec)用来实现引擎中实现函数uclass staticclass 进行虚幻模拟反射机制 ......
  • 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......
  • c\c++实现天气数据获取
    #include<iostream>#include<WinSock2.h>#pragmacomment(lib,"ws2_32.lib")usingnamespacestd;constchar*host="api.seniverse.com";constchar*key="......
  • 基于C++的OpenGL 12 之多光源
    1.引言本文基于C++语言,描述OpenGL的多光源前置知识可参考:基于C++的OpenGL11之投光物-当时明月在曾照彩云归-博客园(cnblogs.com)笔者这里不过多描述每个名词......