脚本宝典收集整理的这篇文章主要介绍了程序设计实习MOOC/7997/3w7:第三周程序填空题2,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
3w7:第三周程序填空题2
总时间限制: 1000ms 内存限制: 65536kB
描述
下面程序输出的结果是:
0
5
请填空:
#include <iostream>
using namespace std;
class A {
public:
int val;
// 在此处补充你的代码
};
main() {
A a;
cout << a.val << endl;
a.GetObj() = 5;
cout << a.val << endl;
}
输入
无
输出
0
5
样例输入
无
样例输出
0
5
提示
所缺代码具有如下形式:
A(_________________ ){ val = n; }
________________ GetObj() {
return _________________;
}
题解分析
先上完整题解代码
#include<iostream>
using namespace std;
class A{
public:
int val;
A(){
a = 0;
}
A(int v){
val = v;
}
A& GetObj(){
return *this;
}
};
int main(){
A a;
cout<<a.val<<endl;
a.GetObj() = 5;
count<<a.val<<endl;
}
分析代码a.GetObj() = 5;
首先,a.GetObj()
返回A
类型的对象,这个对象指向对象a
自己。this
是指向自身对象的指针,*this
是指针this
的值即对象本身,返回值A&
是一个引用,即a.GetObj()
的返回值就是对象a
自己本身,这样分析其实a.GetObj() = 5;
和a = 5
是等价的。
分析代码a = 5
a
是A
类型,A
类型的一个构造函数A(int v);
只有一个参数,是一个类型转换构造函数,C++会首先通过这个类型转换构造函数A(int v);
构造一个临时对象,类型转换构造函数的参数v
的值为5
,然后把这个临时对象赋值给a
,然后临时对象消亡,最后a.val
的值变成了5
.
以上是脚本宝典为你收集整理的程序设计实习MOOC/7997/3w7:第三周程序填空题2全部内容,希望文章能够帮你解决程序设计实习MOOC/7997/3w7:第三周程序填空题2所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。