第七章 7.5.1节练习
来源:互联网 发布:网络机顶盒哪个牌子的好 编辑:程序博客网 时间:2024/04/28 01:38
练习7.36
下面的初始值是错误的,请找出问题所在并尝试修改它。
struct X{ X(int i, int j):base(i), rem(base % j){} int rem, base;};
解答:
struct X{ X(int i, int j):base(i), rem(i % j){} int rem, base;};
练习7.37
使用本节提供的Sales_data类,确定初始化下面的变量时分别使用了哪个构造函数,然后罗列出所有数据成员的值。
Sales_data first_item(cin);
int mian(){
Sales_data next;
Sales_data last("9-999-99999-9");
}
解答:
对260页的程序,构造函数一共有三个。
Sales_data first_item(cin); 使用的是第三个构造函数,其中数据成员的值是从标准输入中读出来的。
Sales_data next; 使用的第一个构造函数,这里bookNo为空,其他值都为默认值。
Sales_data last("9-999-99999-9"); 使用的也是第一个构造函数,其中bookNo为“9-999-99999-9”,其他成员为默认值。
练习7.38
有些情况下我们希望提供cin作为接收istream&参数的构造函数的默认实参,请声明这样的构造函数。
解答:
struct A{ A(std::istream& in = cin){...}};
练习7.39
如果接收string的构造函数和接收istream&的构造函数都使用默认实参,这种行为合法吗?如果不,为什么?
解答:
这样做是合法的。在编译的时候,编译器可能会给出类中还有多个构造函数的警告。
不过,需要在创建对象的时候,对默认构造函数传参,以便类知道用哪个构造函数去初始化这个类。
否则,会出现编译错误,类无法确定使用哪个构造函数去构造这个类对象。
练习7.40
从下面的抽象概念中选择一个(或者你自己指定一个),思考这样的类需要哪些成员,提供一组合理的构造函数并阐明这样做的原因。
(a) Book
(b) Date
(c) Employee
(d) Vehicle
(e) Object
(f) Tree
解答:
class Book{public: Book() = default; Book(istream& in = cin){read(in, *this); Book(string bname, string aname, string no, string date, size_t p): book_name(bname), author_name(author_name), bookNo(no), Date(date), pages(p){} string book_name = ""; string author_name = ""; string bookNo = ""; string Date = ""; size_t pages =1;};
这就是面向对象编程。需要考虑一个对象真实含有什么,这里我只是举一个例子。
其中构造函数有从流中读取数据的,也有直接传参的,还有默认的。或许这可以代表一本书不同的时期,拥有不同的成员数据吧。
剧透一下,这题会被后面章节用到,所以认真的做一下很有必要。
0 0
- 第七章 7.5.1节练习
- 第七章 7.5.3节练习
- 第七章 7.5.4节练习
- 第七章 7.4.1节练习
- 第七章 7.5.5节练习 & 7.5.6节练习
- 第七章 7.2.1节练习 & 7.3.1节练习
- 第七章 7.2节练习
- 第七章 7.6节练习
- 第七章上机练习1
- 第七章上机练习1
- 第七章 7.3.2节练习
- HTML第七章上机练习1
- ACCPHTMLS1第七章上机练习1
- 第七章 上机练习1 2
- HTML第七章上机练习1
- 第七章 编程练习
- 第七章上机练习
- 第七章练习
- C语言中用选择法排序
- 【数论函数变换总结】【超长篇】【last update:2014-10-22】
- ThinkPad T410S 上 Ubuntu 14.04 实现指纹识别登录
- nyoj 814 又见拦截导弹
- 缓存
- 第七章 7.5.1节练习
- 感谢火车上偶遇的贵人
- 函数模板
- Google API 地图离线版
- 方便省事的PHP开发环境搭建,ServKit(即:Phpnow,绿色免费的 Apache + PHP + MySQL 环境套件包)
- 线程安全通用缓冲区队列类
- 导航到锚点
- 学编程学IT教程之ArrayList教程
- Loki库使用(1)