【足跡C++primer】49、重載,轉換,運算子,primer運算子

來源:互聯網
上載者:User

【足跡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 &指的是引用,如果不用引用就會有實參形參的說法,形參的修改不會影響實參的值,如果用引用,實參和形參就指的是同一個變數,形參修改實參即修改
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.