#include#include#define mian main
#define vodi void
class vector
;int main()
vector::vector(double a, double b)
vector::vector()
vector::vector(double a)
/*vector::operator double() const
*/vodi vector::show() const
vector vector::operator-()
vector vector::operator+(vector& add)
bool operator>(const vector& v1, const vector& v2)
vector operator+(const vector& f1, const vector& f2)
用到運算子過載時候,如同程式所示,使用加法
total = vector1 + c;
如果同時存在單個引數的建構函式和過載double,即
vector(double);
operator double() const;
那麼將會造成上述加法語句的二義性,導致編譯錯誤。
編譯器認為上述加法可以:
(1)將vector1物件轉換為double型別與double型別的c相加,再賦值給total物件。
(2)將c通過隱式構造成為vector類物件,再利用友元函式或成員函式(vector operator+(vector&))進行相加。
C 自動型別轉換
在c 中,如果編譯器看到乙個表示式或函式呼叫使用了乙個不合適的型別,它會執行乙個自動型別轉換,將不合適的型別轉換為合適的型別。對於自定義類,可以通過定義該類的建構函式的方法將其它型別轉換為本自定義類 或者使用運算子將本自定義類轉換為其它型別。對於乙個自定義類,可以為該類定義乙個有乙個引數的建構函式。...
c語言的自動型別轉換
2009 12 16 09 53 1292人閱讀 收藏舉報 自動轉換遵循以下規則 1 若參與運算量的型別不同,則先轉換成同一型別,然後進行運算。2 轉換按資料長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉成long型後再進行運算。a.若兩種型別的位元組數不同,轉換...
c語言的自動型別轉換
自動轉換遵循以下規則 1 若參與運算量的型別不同,則先轉換成同一型別,然後進行運算。2 轉換按資料長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉成long型後再進行運算。a.若兩種型別的位元組數不同,轉換成位元組數高的型別。b.若兩種型別的位元組數相同,且一種有符...