【足跡C++primer】49、重載,轉換,運算子,primer運算子
重載,轉換,運算子Conversion Operators
轉換操作符
operator type() const
Conversions to
an array or a function type are not permitted.
轉換函式必須是成員函數,不能指定返回 類型,必須有一個空的參數列表。
函數通常應 const。
Defining a Class with a Conversion Operator(獻給熱愛英語的朋友)定義一個類,表示一個在0到255範圍類的一個整數
class SmallInt{public: SmallInt(int i=0):val(i) { if(i<0 || i>255) throw std::out_of_range("越界!!!越界進球無效!"); } explicit operator int() const {return val;} //轉換操作符,不能有參數,是成員函數,沒有傳回型別private: size_t val;};
實現以下:
void fun1(){ SmallInt si; si=4; //吧4隱式轉換成SmallInt類型// si+3; //隱式轉換si為int類型,由於explicit這裡會出錯,加了explicit之後只能顯式轉換}
Conversion Operators Can Yield Suprising Results
重載操作符能產生驚人的結果
void fun2(){ int i=42;// cin<<i; this code would be legal if the conversion to bool were not explicit!}
說是這樣說但是到底有什麼驚人的效果,反正我是沒感覺!
explicit Conversion Operators
明確轉換操作
說白了就是叫我們使用explicit來使用!
全代碼!這次就簡潔點哈哈!
/*** 功能:重載,轉換,運算子* 時間:2014年7月19日15:05:21* 作者:cutter_point*/#include<iostream>#include <stdexcept>using namespace std;/**************************************Conversion Operators轉換操作符**************************************//*operator type() constConversions toan array or a function type are not permitted.轉換函式必須是成員函數,不能指定返回 類型,必須有一個空的參數列表。函數通常應 const。*//**Defining a Class with a Conversion Operator*///定義一個類,表示一個在0到255範圍類的一個整數class SmallInt{public: SmallInt(int i=0):val(i) { if(i<0 || i>255) throw std::out_of_range("越界!!!越界進球無效!"); } explicit operator int() const {return val;} //轉換操作符,不能有參數,是成員函數,沒有傳回型別private: size_t val;};void fun1(){ SmallInt si; si=4; //吧4隱式轉換成SmallInt類型// si+3; //隱式轉換si為int類型,由於explicit這裡會出錯,加了explicit之後只能顯式轉換}/**Conversion Operators Can Yield Suprising Results重載操作符能產生驚人的結果*/void fun2(){ int i=42;// cin<<i; this code would be legal if the conversion to bool were not explicit!}/**explicit Conversion Operators明確轉換操作*///說白了就是叫我們使用explicit來使用!int main(){ return 0;}
我來說一下,人活在這世界上肯定會遭遇很多不幸和痛苦,而且一般這種不幸的事從來都不是一個一個來的,他們會在你措手不及的時候一下子全來了,就像精明的獵人,在你露出破綻的一瞬間把全部的活力傾瀉在你的身上,確保萬無一失。
每個人不可能一輩子都不犯錯,但是當厄運來臨的時候我們要時刻準備好,不要驚慌失措,冷靜下來,好好想一想你應該如何去面對!
下列函數中,不可以重載運算子的函數是( b )
b。重載運算子實際上也是一個函數,它可以是類的成員函數,也可以是普通函數[全域函數],也可以是友員函數,就是你重載運算子的那個東西。
C語言重載運算子
1、c語言是沒有物件導向的,沒有class這個關鍵詞,而且也沒有運算子多載,我估計你用的是vc編程環境吧。2、A &指的是引用,如果不用引用就會有實參形參的說法,形參的修改不會影響實參的值,如果用引用,實參和形參就指的是同一個變數,形參修改實參即修改