1樓:
最大的錯誤在於沒有理解運算子過載,如:
class a
};其中的運算子函式呼叫,相當於,下面的函式呼叫
《物件》.operator(運算子)();
如果單單寫:
int operator (rmb* rmb,int i) (*)
如果c++認為這個是正確的,那麼在
rmb r;
r[1] = 10;
和int a[4];
a[1] = 1;
c++怎麼能判斷哪個操作是使用 (*)過載函式?
事實上下標運算是對具體資料型別的,因而對於rmb類的下標運算也應該對應於該類,即operator應該是它的成員函式。
另外,更為重要的是,你的rmb類並不是一個容器類,它不需要operator運算子。
rmb r[4];
cout<
class rmb
public:
friend ostream& operator <<
int yuan;
};ostream& operator <<(ostream &os, const rmb &rmb)
int main()
2樓:匿名使用者
#include//使用 std 時,標頭檔案需要為沒有 .h 的using namespace std;
class rmb
int operator (int i) //這個運算子必須屬於某個類,不能為公共全域性函式
public:
int yuan;
}; int main()
有關c 過載運算子的問題
第一行是引用,是傳地址呼叫函式,在呼叫函式時會減少複製物件的開銷。這時,形參就是實參的一個引用,對形參的修改會影響到實參。第二行的傳值呼叫,所謂的傳值呼叫是指把實參複製給形參,形參和實參是兩個獨立的個體,形參是實參在記憶體上的另一個拷貝,對形參的一切修改一般不會影響到實參。如,對於第二個宣告有以下函...
關於C 中過載自增運算子
這個呼叫的預設拷貝函式 this實際上就是呼叫成 copy員函式的物件地址。如 time1.display 若display 裡有用到this的話,this的值其實為 time1,所以 this time1.time time operator int 這個是後加加的函式原型,後 其實是先儲存值,在...
C中運算子,C中運算子叫什麼名字
樓上的都錯了,樓主說的是成員指標運算子.而不是 成員指標運算子在指標運算子的基礎上限定了變數的適用範圍是類或結構體的成員變數或成員函式指標 下面有段 就使用了成員指標運算子 include class claa double fx double x void main include int mai...