C++ Primer 第五版 中文版 练习 13.14&13.15&14.16&14.17 个人code

C++ Primer 第五版 中文版 练习 13.14&13.15&14.16&14.17 

练习 13.14:假定numbered是一个类,它有一个默认构造函数,能为每个对象生成一个唯一的序号,保存在名为mysn的数据成员中。

假定numbered使用合成拷贝控制成员,并给定如下函数:

void f(numbered s) { std::cout << s.mysn << std::endl; }

则下面代码输出什么内容??

numbered a,b=a,c=b;

f(a);f(b);f(c);

答:输出一样的内容,都为a对象的mysn的值。

练习 13.15:假定numbered定义一个拷贝构造函数,能生成一个新的序号。

这会改变上题中调用的输出结果吗?如果会改变,为什么?新的输出结果是什么?

答:不会改变输出结果,输出一样的内容,都为对象的mysn的值。

练习13.16:如果f中的参数是const numbered &,将会怎样?这会改变输出结果吗?如果会改变,为什么?新的输出结果是什么?

答:不会改变输出结果。

练习 13.17:分别编写前三题中所描述的 numbered 和 f ,验证你是否正确预测了输出结果。

答:

#include <iostream>
#include <algorithm>

class numbered
{
public:
	//练习 13.14假设这就是默认构造函数……用rand来生成唯一的序号。预测输出结果是一样的都是a的mysn值
	numbered():mysn(rand()){}
	//拷贝构造函数,练习 13.15 这上依然不会改变输出结果,一样的都是a的mysn值
	numbered(const numbered &num) :mysn(num.mysn){}
	
	//为了方便输出声明为public
	int mysn;
	
};
//练习13.14中的函数
void f(numbered s) { std::cout << s.mysn << std::endl; }
//练习13.16中的函数 不会改变输出结果,一样都是a的输出结果。
void f(const numbered &s) { std::cout << s.mysn << std::endl; }

using namespace std;

int main()
{
	numbered a, b = a, c = b;
	f(a);
	f(b);
	f(c);

	return 0;
}
输出结果总是一样的:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值