北大C++007:返回什么才好呢

题目

#include <iostream>
using namespace std;
class A {
public:
	int val;

	A(int// 在此处补充你的代码};
int main()
{
	int m,n;
	A a;
	cout << a.val << endl;
	while(cin >> m >> n) {
		a.GetObj() = m;
		cout << a.val << endl;
		a.GetObj() = A(n);
		cout << a.val<< endl;
	}
	return 0;
}

输入

多组数据,每组一行,是整数 m 和 n

输出

先输出一行:
123
然后,对每组数据,输出两行,第一行是m,第二行是n

答案

     n)
	{
		val = n;
	}
	A(){
		val = 123;
	}
	A & GetObj()
	{
		return *this;
	}

解析

首先输出的是123,说明调用了一个无参数的构造函数,使得val变为123,所以无参构造函数就要实现这个功能。

给一个函数赋值,就要用到引用的功能。那GetObj是什么类型呢?一开始想到的是int类型,毕竟它等号后面是m,是一个数。但是看下一行的输出,是a.val的格式,并没有返回这个函数。

所以它的类型应该是A,而A是一个类,并不是一个int的变量,所以这里使用了类型转化的构造的方法,我们需要一个只有一个参数的构造函数,让编译器自动处理类型的转换问题。

这题不了解的就是该函数的返回值,return 的内容是*this,它指的就是对象本身。
return中this和*this的理解

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值