程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 第14章 重載操作符與轉換(8)

第14章 重載操作符與轉換(8)

編輯:C++入門知識

14.9 轉換與類類型
14.9.1 轉換為什麼有用
1. 支持混合類型表達式
2. 轉換減少所需操作符的數目
14.9.2 轉換操作符
轉換操作符(conversion operator)是一種特殊的類成員函數。它定義將類類型值轉變為其他類型值的轉換。轉換操作符在類定義體內聲明,在保留字operator之後跟著轉換的目標類型。

class SmallInt{ 
public: 
    SmallInt(int i=0):val(i) 
    { 
        if(i<0||i>255) 
        { 
            throw out_of_range("out of range"); 
        } 
    } 
    operator int() const  
    { 
        return val; 
    } 
private: 
    size_t val; 
}; 
對任何可作為函數返回類型的類型(除了void之外)都可以定義轉換函數。一般而言,不允許轉換為數組或函數類型,轉換為指針類型(數據和函數指針)以及引用類型是可以的。
轉換函數必須是成員函數,不能指定返回類型,並且形參表必須為空。
雖然轉換函數不能指定返回類型,但是每個轉換函數必須顯式返回一個指定類型的值。
轉換函數一般不應該改變被轉換的對象。因此,轉換操作通常應定義為const成員。
1.使用類類型轉換

cout<< SmallInt(100)<<endl; 
2. 類類型轉換和標准轉換

SmallInt i(100); 
cout<<(i<10.10)<<endl; 
使用轉換函數時,被轉換的類型不必與所需要的類型完全匹配。必要時可在類類型轉換之後跟上標准轉換以獲得想要的類型。
3. 只能應用一個類類型轉換
類類型轉換之後不能再跟另一個類類型轉換。如果需要多個類類型轉換,則代碼將出錯。
4. 標准轉換可放在類類型轉換之前
使用構造函數執行隱式轉換的時候,構造函數的形參類型不必與所提供的類型完全匹配。

摘自 xufei96的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved