#include <iostream>
using namespace std;
class A {
public:
int val;
int c;
A(int n = 0,int cc= 1) {
val = n;
c = cc;
}
A& getObj1() {
//cout << "哈哈哈";
return *this;
}
int getObj2() { return val; }
};
int main()
{
A a, b(2), c[2] = { 2,3 };
cout << a.val << endl;
cout << b.val << endl;
a.getObj1() = 5; //這一句看不懂
cout << a.val << endl;
return 0;
}
a.getObj1() = 5;
為什么這一句能改變a.val的值啊?
uj5u.com熱心網友回復:
你這個編譯沒有錯誤和警告嗎?uj5u.com熱心網友回復:
這種寫法本身就是對的,因為整數5可以通過建構式隱式的轉化為Aa.getObj1() = 5;相當于a.getObj1() = A(5);
有時這種轉換不符合實際邏輯,要避免這種轉化需要使用到explicit關鍵字,如下
explicit A(int n = 0,int cc= 1) {
val = n;
c = cc;
};
uj5u.com熱心網友回復:
getobj1回傳的是參考,因為return *this,其實就是a,參考既別名,相當于a=5uj5u.com熱心網友回復:
getobj1回傳的是參考,因為return *this,其實就是a,參考既別名,相當于a=5轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/14294.html
標籤:C++ 語言
上一篇:電腦鎖屏解鎖后d3d不繼續渲染了
