參考博客:https://blog.csdn.net/feiyanaffection/article/details/79183340
隱式類型轉換
如果不同類型的數據在一起操作的時候編譯器會自動進行一個數據類型轉換。例如常用的基本數據類型有如下類型轉換關系:
轉換構造函數
- 構造函數
- 有且僅有一個參數
有這種構造函數時我們就可以從其他類型隱式地轉換為類類型。因此成為轉換構造函數。例如:
class A
{int a;public:A(int x){a=x;}
};int main()
{A tmp;tmp=8;//調用轉換構造函數,相當于tmp=A(8);
}
有時我們為了避免隱式轉換帶來的bug,用explicit
杜絕編譯器的隱式轉換。
類型轉換函數
我們可以將其他類型通過類型轉換函數變為類類型,可是如果我們想將類類型(簡潔方便地)變為其他類型,應該怎樣做呢?
這時候就要用到類型轉換函數,一般格式為:
operator 目標類型()
{//return 目標類型的返回值
}
例如:
class A
{int a;public:A(int x=10){a=x;}operator int(){return a;}
};
int main()
{A a(20);int x=a;
}