程序设计实习MOOC/7997/3w7:第三周程序填空题2
3w7:第三周程序填空题2
总时间限制: 1000ms 内存限制: 65536kB
描述
下面程序输出的结果是:
0
5
请填空:
# include
using namespace std;
class A {
public:
int val;
// 在此处补充你的代码
};
main() {
A a;
cout
using namespace std;
class A{
public:
int val;
A(){
a = 0;
}
A(int v){
val = v;
}
A& GetObj(){
return *this;
}
};
int main(){
A a;
couta.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.
#c++、getobj、int、val#
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!