C++學習總結(十 五)——類的型別裝換方法
阿新 • • 發佈:2019-02-08
類與類間的資料型別轉換方法有兩種
一.通過類的建構函式進行類與類間的資料型別裝換
二.使用轉換函式進行資料型別的裝換。X::operator T(){return T;}
將X型別的物件裝換為T型別的物件,裝換函式沒有引數,沒有返回型別,但是必須用return 返回T型別物件,且該函式只能成為成員函式,不能為友元。
#include<iostream> class complex { public: explicit complex(int num)//避免隱式轉換 { x = y = num; } operator int() //不支援友元函式,只支援成員函式。 { return x + y; } void print() { std::cout << x << '+' << y << 'i' << std::endl; } private: int x; int y; }; void main1() { complex complex1(10); complex1.print(); int num = complex1; std::cin.get(); } //類與類間的資料型別轉換 class mianji { public: friend class zuobiao; mianji() { this->cx = 0; this->cy = 0; } //~mianji(); private: int cx; int cy; }; class zuobiao { public: //friend class mianji;//定義友元類,允許友元訪問私有變數 friend std::ostream &operator <<(std::ostream &out, zuobiao &zuobiao1) { out << zuobiao1.x; out << zuobiao1.y; return out; } zuobiao(mianji mianji1) { this->x = mianji1.cx; this->y = mianji1.cy; } //~zuobiao(); operator mianji() { mianji mianji1; this->x = mianji1.cx; this->y = mianji1.cy; return mianji1; } private: int x; int y; }; int main() { mianji mianji1; zuobiao zuobiao1 = static_cast<zuobiao>(mianji1); zuobiao zuobiao2(mianji1);//使用建構函式進行型別轉換 zuobiao2 = mianji1;//使用成員函式,轉換函式進行型別初始化 std::cout << zuobiao1; std::cout << zuobiao2; std::cin.get(); }