對於簡單的運算子,可以參考之前的博文。之後會有一篇關於從等號運算子過載的角度研究深淺拷貝的博文。這裡是講:逗號,取成員運算子,輸入輸出運算子,下標運算子,括號,new和delete的過載。
逗號運算子過載需要乙個引數,並且返回自身類。逗號運算子在複製操作中比較常見,下面就是以賦值操作為例的逗號運算子過載。
#include
#include
using
namespace
std;
class tem;
tem::tem(int xx=0)
tem tem::operator , (tem t)
void tem::display()
返回類型別的指標變數,符合平時的用法,這樣就可以不用在宣告變數時候使用指標,但是之後可以按照指標的方式呼叫,簡單方便。
#include
using
namespace
std;
class tem
}; int main()
>>,《運算子過載分別在cin、cout之後呼叫。我們需要用友元運算子對他們進行過載,注意返回型別分別是istream 和 ostream。
#includeusing namespace std;
class
date
friend ostream& operator <<(ostream &stream,const
date &date)
}; int main()
下標運算子只能被過載為類的非靜態成員函式,不能過載為友元函式和普通函式。下標運算子只能有乙個引數,多和陣列有關,返回引用型別可以檢視和修改陣列元素。
#include
#include
using
namespace
std;
const
int len = 3;
class tem
};int main()
括號運算子只能被過載為類的非靜態成員函式。並且引數個數和返回型別沒有限制。所以我們可以實現很多指令碼語言中或者string庫裡面的切片操作。
#include
#include
using
namespace
std;
const
int len = 10;
class tem
int * operator ()(int start ,int end)
};int main()
cout
0;}
注意new和delete過載的時候引數的形式和返回型別即可。
#include
#include
using
namespace
std;
const
int len = 10;
class tem;
void * tem::operator
new(size_t size)
void * tem::operator
new(size_t size,char p)
void tem::operator
delete(void *p)
int main()
csdn位址 :
也可以致信進行交流 : [email protected]
深入C 的運算子過載
對於簡單的運算子,可以參考之前的博文。之後會有一篇關於從等號運算子過載的角度研究深淺拷貝的博文。逗號運算子過載需要乙個引數,並且返回自身類。逗號運算子在複製操作中比較常見,下面就是以賦值操作為例的逗號運算子過載。include includeusing namespace std class tem...
深入C 的運算子過載
對於簡單的運算子,可以參考之前的博文。之後會有一篇關於從等號運算子過載的角度研究深淺拷貝的博文。這裡是講 逗號,取成員運算子,輸入輸出運算子,下標運算子,括號,new和delete的過載。逗號運算子過載需要乙個引數,並且返回自身類。逗號運算子在複製操作中比較常見,下面就是以賦值操作為例的逗號運算子過...
C 運算子過載 過載特殊運算子
賦值運算子用於同類物件間的相互賦值。賦值運算子只能被過載為類的非靜態成員函式,不能過載為友元函式和普通函式。對於使用者自定義的類而言,如果沒有過載賦值運算子,那麼c 編譯器會為該類提供乙個預設的過載賦值運算子成員函式。預設賦值運算子的工作方式是按位對拷,將等到右邊物件的非靜態成員拷貝給等號左邊的物件...