c 過載操作符

2021-08-04 07:02:24 字數 2930 閱讀 2350

/******************************賦值(=)、下標(【】)、呼叫(())、成員訪問->必須使用成員函式******/

/****************************輸入輸出流必須使用全域性函式法(友元函式)實現過載**********************/

/*****************************復合賦值符、自增、自減、解引用、算數操作付、關係操作符、相等操作符、位操作符通常使用普通非成員函式*****/

/*****************************(::)(.)、(.*)、(sizeof)(?,))不能過載*****************/

//邏輯與&&和邏輯或||可以實現實現操作符過載,但是無法短路規則,所以一般不用這兩者的操作符過載

#include

#include

#include

#include

#include

using namespace std;

class sales_item

vectorivec;

};sales_item operator+(const sales_item&, const sales_item&);

bool operator==(sales_item& s1, sales_item& s2)

和14.

class checkoutrecord

;     //不明白這樣定義的意義,如果不定義過載操作符照樣也可以實現輸出輸入字元啊!!!

//輸入輸出流的過載如果用成員函式實現,需要在類ostream 和istream中新增過載函式operator《和oper沒有ator>>, 而實際上我們沒有類ostream 和istream的原源**,所以過載輸入輸出流只能用友元函式來實現

//函式返回值當左值時要返回引用

ostream& operator<<(ostream&out,  const checkoutrecord&s)

istream& operator>>(istream& in, checkoutrecord &s)

s.wait_list.clear();//清空容器中元素

while (in)

return in;

}class complex

int geta()

int getb()

friend complex operator- (const complex& c1, const complex& c2);

friend complex& operator++ (complex& c1);//前置++

friend complex operator++ (complex& c1,int);//後置++,引數多乙個佔位符  一定要注標點符號一定在英文狀態下

complex operator+ (const complex& c2);

complex operator--();

complex operator--(int);

int operator()(int a,int b,int c);

friend ostream& operator<<(ostream& out, const complex& c);

};complex complex::operator+ (const complex& c2)

int complex::operator()(int a, int b, int c)

complex complex::operator--()

complex complex::operator--(int)

complex& operator++ (complex& c1)

complex operator++ (complex& c1, int)

complex operator- (const complex& c1, const complex& c2)

ostream& operator<<(ostream& out, const complex& c)//全域性函式實現過載左移運算子

將函式物件應用於標準庫演算法     有點不懂????為什麼count_if每次呼叫它的形參時,會自動的呼叫類的函式呼叫符

class gt_cls

bool operator()(string& s)

private:

string::size_type bound;

};int main01()

cout << rd1;*/

/*sales_item item1(10,20); 

sales_item item2(20,30);

item1.ivec.push_back(3);

cout << item1.ivec[0] << endl;

cout << item1.price << item1.unit_sold << "\n"if(item1 == item2)

cout <<1 << endl;

else

cout << 0 << endl;*/

system("pause");

cin.get();

return 0;

#include

#include

using namespace std;

int arr = ;

int main()

;std::for_each(arr, arr + 4, myfunc);*/

int a=4,b=4,c=4;

a += (a++);

printf("%d\n", a);

b += (++b);

printf("%d\n", b);

/*return 0;*/

(c++) += c;

(++c) += (c++);

system("pause");

}

C 操作符過載

1.作為成員過載 class myclass public myclass operator const myclass d cons friend myclass operator const myclass a1,const myclass a2 關於返回值型別的討論 呼叫者堆疊裡返回乙個物件效...

C 過載操作符

過載操作符 一 過載操作符的定義 1.過載操作符的結構 返回型別 operator 需要過載的操作符 形參列表 注意 形引數目應和運算元數目相同。2.過載操作符的幾條注意事項 1 過載的操作符名不能通過連線其他合法符號來建立任何新的操作符。如 2 過載操作符必須具備至少乙個類型別或列舉型別的運算元。...

c 操作符過載

過載操作符 一 限制 1 不能增加新的操作符 2 有些操作符不能過載,如.物件中的訪問成員 作用域解析操作符 sizeof 三元操作符 3 不能改變操作符的元數,元數是指與操作符相關的引數或運算元個數。比如一元操作符 只能應用於乙個操作符 4 不能改變操作符的優先順序 5 不能重新定義內建型別的操作...