当前位置: 首页 > news >正文

个人网站建设推广策划书阿里网站seo

个人网站建设推广策划书,阿里网站seo,人民日报客户端夜读在哪里,做计算机模拟ie题模拟网站打不开文章目录练习7.411、头文件2、源文件3、主函数练习7.42练习7.43练习7.44练习7.45练习7.46练习7.47练习7.48练习7.49练习7.50练习7.41 使用委托构造函数重新编写你的Sales_data 类,给每个构造函数体添加一条语句,令其一旦执行就打印一条信息。用各种可能的…

文章目录

      • 练习7.41
        • 1、头文件
        • 2、源文件
        • 3、主函数
      • 练习7.42
      • 练习7.43
      • 练习7.44
      • 练习7.45
      • 练习7.46
      • 练习7.47
      • 练习7.48
      • 练习7.49
      • 练习7.50

练习7.41

使用委托构造函数重新编写你的Sales_data 类,给每个构造函数体添加一条语句,令其一旦执行就打印一条信息。用各种可能的方式分别创建 Sales_data 对象,认真研究每次输出的信息直到你确实理解了委托构造函数的执行顺序。

1、头文件

#ifndef CP5_ex7_41_h
#define CP5_ex7_41_h#include <string>
#include <iostream>class Sales_data
{friend std::istream &read(std::istream &is, Sales_data &item);friend std::ostream &print(std::ostream &os, const Sales_data &item);friend Sales_data add(const Sales_data &lhs, const Sales_data &rhs);public:Sales_data(const std::string &s, unsigned n, double p) :bookNo(s), units_sold(n), revenue(n*p){std::cout << "Sales_data(const std::string&, unsigned, double)" << std::endl;}Sales_data() : Sales_data("", 0, 0.0f){std::cout << "Sales_data()" << std::endl;}Sales_data(const std::string &s) : Sales_data(s, 0, 0.0f){std::cout << "Sales_data(const std::string&)" << std::endl;}Sales_data(std::istream &is);std::string isbn() const { return bookNo; }Sales_data& combine(const Sales_data&);private:inline double avg_price() const;private:std::string bookNo;unsigned units_sold = 0;double revenue = 0.0;
};inline
double Sales_data::avg_price() const
{return units_sold ? revenue / units_sold : 0;
}std::istream &read(std::istream &is, Sales_data &item);
std::ostream &print(std::ostream &os, const Sales_data &item);
Sales_data add(const Sales_data &lhs, const Sales_data &rhs);#endif

2、源文件

#include "exercise7_41.h"Sales_data::Sales_data(std::istream &is) : Sales_data()
{std::cout << "Sales_data(istream &is)" << std::endl;read(is, *this);
}Sales_data& Sales_data::combine(const Sales_data& rhs)
{units_sold += rhs.units_sold;revenue += rhs.revenue;return *this;
}std::istream &read(std::istream &is, Sales_data &item)
{double price = 0;is >> item.bookNo >> item.units_sold >> price;item.revenue = price * item.units_sold;return is;
}std::ostream &print(std::ostream &os, const Sales_data &item)
{os << item.isbn() << " " << item.units_sold << " " << item.revenue;return os;
}Sales_data add(const Sales_data &lhs, const Sales_data &rhs)
{Sales_data sum = lhs;sum.combine(rhs);return sum;
}

3、主函数

#include "exercise7_41.h"using std::cout; using std::endl;int main()
{cout << "1. default way: " << endl;cout << "----------------" << endl;Sales_data s1;cout << "\n2. use std::string as parameter: " << endl;cout << "----------------" << endl;Sales_data s2("CPP-Primer-5th");cout << "\n3. complete parameters: " << endl;cout << "----------------" << endl;Sales_data s3("CPP-Primer-5th", 3, 25.8);cout << "\n4. use istream as parameter: " << endl;cout << "----------------" << endl;Sales_data s4(std::cin);return 0;
}

练习7.42

对于你在练习7.40中编写的类,确定哪些构造函数可以使用委托。如果可以的话,编写委托构造函数。如果不可以,从抽象概念列表中重新选择一个你认为可以使用委托构造函数的,为挑选出的这个概念编写类定义。

class Book 
{
public:Book(unsigned isbn, std::string const& name, std::string const& author, std::string const& pubdate):isbn_(isbn), name_(name), author_(author), pubdate_(pubdate){ }Book(unsigned isbn) : Book(isbn, "", "", "") {}explicit Book(std::istream &in) { in >> isbn_ >> name_ >> author_ >> pubdate_;}private:unsigned isbn_;std::string name_;std::string author_;std::string pubdate_;
};

练习7.43

假定有一个名为 NoDefault 的类,它有一个接受 int 的构造函数,但是没有默认构造函数。定义类 C,C 有一个 NoDefault 类型的成员,定义C 的默认构造函数。

class NoDefault {
public:NoDefault(int i) { }
};class C {
public:C() : def(0) { } 
private:NoDefault def;
};

练习7.44

下面这条声明合法吗?如果不,为什么?

vector<NoDefault> vec(10);

不合法。因为 NoDefault 没有默认构造函数。

练习7.45

如果在上一个练习中定义的vector的元素类型是C,则声明合法吗?为什么?

合法。因为 C 有默认构造函数。

练习7.46

下面哪些论断是不正确的?为什么?

(a) 一个类必须至少提供一个构造函数。
(b) 默认构造函数是参数列表为空的构造函数。
(c) 如果对于类来说不存在有意义的默认值,则类不应该提供默认构造函数。
(d) 如果类没有定义默认构造函数,则编译器将为其生成一个并把每个数据成员初始化成相应类型的默认值。
  • (a) 不正确。如果我们的类没有显式地定义构造函数,那么编译器就会为我们隐式地定义一个默认构造函数,并称之为合成的默认构造函数
  • (b) 不完全正确。为每个参数都提供了默认值的构造函数也是默认构造函数。
  • © 不正确。哪怕没有意义的值也需要初始化。
  • (d) 不正确。只有当一个类没有定义任何构造函数的时候,编译器才会生成一个默认构造函数。

练习7.47

说明接受一个string 参数的Sales_data构造函数是否应该是explicit的,并解释这样做的优缺点。

是否需要从 string 到 Sales_data 的转换依赖于我们对用户使用该转换的看法。在此例中,这种转换可能是对的。null_book 中的 string 可能表示了一个不存在的 ISBN 编号。

优点:

  • 可以抑制构造函数定义的隐式转换

缺点:

  • 为了转换要显式地使用构造函数

练习7.48

假定Sales_data 的构造函数不是explicit的,则下述定义将执行什么样的操作?

string null_isbn("9-999-9999-9");
Sales_data item1(null_isbn);
Sales_data item2("9-999-99999-9");

这些定义和是不是 explicit 的无关。

练习7.49

对于combine 函数的三种不同声明,当我们调用i.combine(s) 时分别发生什么情况?其中 i 是一个 Sales_data,而 s 是一个string对象。

(a) Sales_data &combine(Sales_data); // ok
(b) Sales_data &combine(Sales_data&); // error C2664: 无法将参数 1 从“std::string”转换为“Sales_data &”	
(c) Sales_data &combine(const Sales_data&) const; // 该成员函数是const 的,意味着不能改变对象。而 combine函数的本意就是要改变对象

练习7.50

确定在你的Person 类中是否有一些构造函数应该是 explicit 的。

explicit Person(std::istream &is){ read(is, *this); }
http://www.hotlads.com/news/1605.html

相关文章:

  • 商业网站建设目标搜索引擎广告投放
  • 做网上夫妻去哪个网站关键词排名优化教程
  • 怎么做网站vip并且收费软件开发公司网站
  • 东莞网站制作公司网站seo在线优化
  • 外贸网站的公司介绍网络营销策略概念
  • 北京网站建设方案湖南网站建设平台
  • 团队协同网站开发查询域名注册信息
  • 驻马店做网站哪家好整合营销传播策划方案
  • 工业设计网站下载朋友圈推广一天30元
  • 私做政府网站上海网站排名优化公司
  • 国内房地产设计网站建设2022智慧树互联网与营销创新
  • 网站开发样板seo优化服务公司
  • 网站规划有什么意义推广是什么意思
  • 建筑学院网站韶山百度seo
  • 绵竹移动网站建设seo网站优化培训怎么样
  • 免费公司注册网站吗谷歌广告投放步骤
  • wordpress永久链接seo教程免费
  • 营销网站策划windows优化大师收费吗
  • 找什么样的公司帮助做网站厦门seo推广
  • 网站代码需要注意什么问题潍坊seo排名
  • 网页游戏排行榜前十名射击广州seo排名优化服务
  • 英语网站建设推广普通话的宣传语
  • 什么叫网站被k雅思培训机构哪家好机构排名
  • 个人做网站的时代已经过去九江seo公司
  • 海外做代购去哪个网站能打开各种网站的搜索引擎
  • 纯静态网站怎么做培训总结怎么写
  • 淘宝网做网站seo排名优化什么意思
  • 网游网站开发东莞seo排名扣费
  • 企业网站建设规划 论文百度搜索推广创意方案
  • .网站建设风险搜索竞价托管