淺談C++類型轉化(運算符重載函數)和基本運算符重載(自增自減)。本站提示廣大學習愛好者:(淺談C++類型轉化(運算符重載函數)和基本運算符重載(自增自減))文章只能為提供參考,不一定能成為您想要的結果。以下是淺談C++類型轉化(運算符重載函數)和基本運算符重載(自增自減)正文
投稿:jingxian
下面小編就為大家帶來一篇淺談C++類型轉化(運算符重載函數)和基本運算符重載(自增自減)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧類型轉化(運算符重載函數)
用轉換構造函數可以將一個指定類型的數據轉換為類的對象。但是不能反過來將一個類的對象轉換為一個其他類型的數據(例如將一個Complex類對象轉換成double類型數據)。在C++提供類型轉換函數(type conversion function)來解決這個問題。類型轉換函數的作用是將一個類的對象轉換成另一類型的數據。
類型轉換函數的一般形式為:
operator 類型名( ){ 實現轉換的語句 }
下面是簡單實現。這時候,Base起了兩方面的作用:類和數據類型。系統會在需要的時候自動調用對應的類方法。
#include <iostream> using namespace std; class Base{ private: float x; int y; public: Base (float xx=0,int yy=0){ x = xx; y = yy; } operator float (){ return x; } operator int (){ return y; } void display(){ cout<<"x is :"<<x<<";y is :"<<y<<endl; } }; int main() { Base base(1.0,2); base.display(); int y= base; float x= base; cout<<"NewX is :"<<x<<"NewY is:"<<y<<endl; return 0; }
基本運算符重載(自增自減)
主要總結 自增自減的前置和後置的用法。其他的加減乘除較簡單。
簡單的代碼實現(純語法)
#include <iostream> using namespace std; class Base{ private: float x; int y; public: Base (float xx=0,int yy=0){ x = xx; y = yy; } operator float (){ return x; } operator int (){ return y; } Base operator ++(){//前置 ++ x++; y++; return *this; } Base operator --(){ x--; y--; return *this; } Base operator ++(int ){//後置 ++ Base temp = *this; ++(*this); return temp; } Base operator --(int ){ Base temp = *this; --(*this); return temp; } void display(){ cout<<"x is :"<<x<<";y is :"<<y<<endl; } }; int main() { Base base(1.0,1); Base tem = base++; base.display(); tem.display(); Base base2(1.0,1); tem = ++base2; base.display(); tem.display(); return 0; }
發現:
後置和前置的區別是有無int參數。
後置需要申請新的空間,大小是類的大小。所以,後置操作會有額外的時間空間開銷。
盡量使用前置操作:如:for (int i=0;i<n;++i)
以上這篇淺談C++類型轉化(運算符重載函數)和基本運算符重載(自增自減)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。