operator是什麼?
在檢視C++的thread定義的時候看到一個
operator意思:運算符
百科解釋:operator是C#、C++的關鍵字,它和運算符一起使用,表示一個運算符函數,了解時應将operator=整體上視為一個函數名。
這是C++擴充運算符功能的方法,雖然樣子古怪,但也可以了解:
一方面要使運算符的使用方法與其原來一緻,
另一方面擴充其功能隻能通過函數的方式(c++中,"功能"都是由函數實作的)。
用途:
C++ 提供的運算符,通常隻支援對于基本資料類型和标準庫中提供的類進行操作,而對于使用者自己定義的類,如果想要通過這些運算符實作一些基本操作(如比較大小、判斷是否相等),就需要使用者自己來定義這個運算符的具體實作了。
例子
例如,我們設計了一個名為“person”的類,現在要判斷 person 類的兩個對象 p1 和 p2 是否一樣相等,比較規則是比較對象的年齡(person 類的資料成員“age”)大小。那麼,在設計 person 類的時候,就可以通過針對運算符進行重載,來使運算符==具有比較對象 p1 和 p2 的能力(實際上比較的内容是 person 類中的資料成員“age”)。
//簡單例子重載()運算符
class A
{
public:
int operator() ( int val )
{
return val > 0 ? val : -val;
}
};
int i = -1;
A func;
cout << func(i);
在對象建立時有三種方式一種是隐式建立,一種是顯式建立,還有就是new建立,其中new建立實作了兩件事: new開辟的空間在堆上,而一般聲明的"指針"變量存放在棧上。
1、調用operator new()函數配置設定記憶體(實際上是malloc實作);
2、調用構造函數: 調用 placement new 來實作。