亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

函數調用運算符與重載、類型轉換

2019-11-14 08:59:34
字體:
來源:轉載
供稿:網友

函數調用運算符Operator() 函數運算符必須是成員函數。一個類可以定義多個不同版本的調用運算符,相互之間應該在參數數量或類型上有所區別。如果類定義了調用運算符,則該類的對象稱作函數對象。 函數對象類除了operator之外還可以包含其他成員。這些成員通常用于定制調用運算符中的操作。

#include <iostream>#include <string>class A{public: int operator()(bool a,int b,int c) const { if(a) return b; else return c; }};class GetInput{public: GetInput(std::istream &i=std::cin):is(i){} std::string operator()()const { std::string str; std::getline(is,str); return is?str:std::string(); }PRivate: std::istream &is;};int main(){ A a; int ret=a(0,7,8); std::cout<<ret<<std::endl; GetInput gi; std::cout<<gi()<<std::endl; return 0;}

lambda表達式相當于一個類含有函數調用符的對象。

stable_sort(Words.begin(),words.end(),[](const string &a,const string &b){return a.size()<b.size()});等價于class shorterstring{public: bool operator()(const string &a,const string &b) const { return a.size()<b.size() }}

標準庫定義了一組表示算術運算符、關系運算符和邏輯運算符的類。這些類被定義成模板的形式。

這里寫圖片描述

#include <iostream>#include <functional>int main(){ std::plus<int> intadd; int sum=intadd(10,20); std::cout<<sum; return 0;}

C++語言有幾種可調用的對象:函數,函數指針,lambda表達式,bind創建的對象,重載的函數運算符的類。不同類型可能有相同的調用形式。在制作函數表的時候,我們可以利用function模板來實現不同類型而具有相同調用形式形成函數表。

#include <functional>#include <iostream>#include <map>#include <string>int add(int i,int j){return i+j;}auto mod=[](int i,int j){return i%j;}; struct Div{ int operator ()(int i, int j) const { return i / j; } };auto binops=std::map<std::string,std::function<int(int,int)>>{ {"+",add},//加法,函數指針 {"%",mod},//求余,命名的lambda對象 {"/",Div()},//除法,函數對象類 {"-" ,std::minus<int>()},//減法,標準庫函數對象 {"*",[](int i,int j){return i*j;}}//乘法,未命名的lambda對象 };int main(){ while ( std::cout << "Pls enter as: num operator num :/n", true ) { int lhs, rhs; std::string op; std::cin >> lhs >> op >> rhs; std::cout << binops[op](lhs, rhs) << std::endl; } return 0;}

類型轉換運算符是類的一種特殊的成員函數,它負責將一個類類型的值轉換成其他類型。一個類型轉換函數必須是類的成員函數,它不能聲明返回類型,形參列表也必須為空。類轉換類型函數通常是const.

operator type() const;

類型轉換運算符可能產生意外的結果,C++11新標準引入了顯示的類型轉換運算符

class SmallInt{ explicit operator int() const{return val;}}SmallInt si=3;//正確si+3;//錯誤,需要隱式類型轉換,但類運算符是顯式的static_cast<int>(si)+3;//正確:顯式地請求類型轉換

向bool的類型轉換通常用在條件部分,因此operator bool一般定義成explicit.


如果類中包含一個或多個類型,則必須確保在類類型和目標類型之間只存在唯一一種轉換方式。 (1)實參匹配和相同的類型轉換

struct B;struct A{ A()=default; A(const B&);};struct B{ operator A() const; };A f(const A&);B b;A a=f(b);//二義性錯誤:f(B::operator A()) ?f(A::A(const B&))A a1=f(b.operator A());//正確:使用B的類型轉換運算符A a2=f(A(b));//正確:使用A的構造函數

(2)二義性與轉換目標為內置類型的多重類型轉換

這里寫圖片描述


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色综久久综合桃花网| 久久人人爽人人爽爽久久| 欧美日韩在线第一页| 日韩精品欧美激情| 2018国产精品视频| 国外色69视频在线观看| 欧美精品手机在线| 国产一区二区三区在线观看视频| 亚洲综合中文字幕在线观看| 成年人精品视频| 久久国产视频网站| 欧美在线欧美在线| 少妇av一区二区三区| 国色天香2019中文字幕在线观看| 91国内产香蕉| 久久精品国产综合| 久久精品国产一区二区三区| 热久久这里只有精品| 亚洲成人精品av| 国产精品第100页| 亚洲电影免费观看高清| 久久久国产精彩视频美女艺术照福利| 亚洲精品黄网在线观看| 欧美成人sm免费视频| 日韩视频中文字幕| 欧美午夜宅男影院在线观看| 亚州精品天堂中文字幕| 欧美麻豆久久久久久中文| 国产精品视频色| 色偷偷av亚洲男人的天堂| 欧美一二三视频| 亚洲欧美日韩中文视频| 成人xvideos免费视频| 国产精品人成电影| 97高清免费视频| 日韩一级黄色av| 日韩成人在线观看| 日韩精品高清视频| 亚洲国产高清自拍| 日韩欧美国产免费播放| 亚洲乱码国产乱码精品精天堂| 91久热免费在线视频| 亚洲一区二区三区香蕉| 国产精品∨欧美精品v日韩精品| 亚洲视频欧美视频| 亚洲91精品在线观看| 亚洲人成在线播放| 超碰97人人做人人爱少妇| 欧美日韩视频免费播放| 91亚洲精品在线观看| 日韩一级裸体免费视频| 国产精品视频地址| 青青青国产精品一区二区| 欧美亚洲国产日本| 亚洲国产成人精品久久久国产成人一区| 91在线观看免费网站| 中文字幕欧美日韩| 一本一本久久a久久精品牛牛影视| 成人免费网站在线| 国产欧亚日韩视频| 久久噜噜噜精品国产亚洲综合| 国产日韩欧美91| 久久视频免费在线播放| 中文字幕亚洲自拍| 亚洲国产精品va在线看黑人| 亚洲欧美精品中文字幕在线| 国产高清在线不卡| 亚洲一区中文字幕在线观看| 欧美激情视频在线| 欧美精品久久久久久久久| 亚洲品质视频自拍网| 91在线色戒在线| 一本大道久久加勒比香蕉| 日韩专区在线播放| 日韩中文字幕在线视频播放| 97人洗澡人人免费公开视频碰碰碰| 国产精品亚洲精品| 欧美日韩国产一区二区三区| 亚洲精品www久久久久久广东| 中文字幕日韩精品在线| 66m—66摸成人免费视频| 国产精品美女免费视频| 国产精品久久不能| 国产成人精品在线视频| 亚洲精品成人av| 日韩精品视频在线| 成人国产精品一区| 欧美激情在线观看| 国产精品黄页免费高清在线观看| 91久久久在线| 久久久在线视频| 日产日韩在线亚洲欧美| 91九色在线视频| 在线播放国产一区二区三区| 97在线观看免费| 国产精品入口夜色视频大尺度| 精品美女永久免费视频| 97精品一区二区视频在线观看| 国产精品久久久久久久久借妻| 国内精品久久久久久久| 日韩欧美在线免费| 日韩第一页在线| www.亚洲男人天堂| 91精品国产高清久久久久久| 日韩av在线免费观看一区| 欧美成人中文字幕| 国产欧美亚洲精品| 亚洲黄色www| 91黄色8090| 色偷偷综合社区| 91精品久久久久久久久久久久久久| 亚洲人成网站999久久久综合| 亚洲一级片在线看| 亚洲精品之草原avav久久| 欧美性猛交xxxxx水多| 国产精品91免费在线| 欧美与黑人午夜性猛交久久久| 国产精品丝袜一区二区三区| 欧美精品免费在线观看| 国产+成+人+亚洲欧洲| 国产亚洲视频中文字幕视频| 日韩高清电影免费观看完整| 亚洲色图18p| 亚洲视频国产视频| 精品人伦一区二区三区蜜桃免费| 97精品国产97久久久久久免费| 国产在线观看不卡| 成人日韩av在线| 久久亚洲精品一区| 国产精品久久久久久久美男| 精品美女久久久久久免费| 黑人欧美xxxx| 国产精品九九久久久久久久| 久久国产精品久久久久久| 91免费看视频.| 久久亚洲精品一区二区| 亚洲成人1234| 欧美有码在线观看视频| 夜夜嗨av一区二区三区四区| 久久在线精品视频| 久久久久久久久久婷婷| 日本伊人精品一区二区三区介绍| 亚洲国产精品久久久| 国产精品爽爽爽爽爽爽在线观看| 美女扒开尿口让男人操亚洲视频网站| 久久久久久久久综合| 亚洲欧美一区二区三区情侣bbw| 国产视频久久久久久久| 精品一区二区三区四区| 亚洲一区二区三区777| 中文字幕精品久久| 亚洲综合在线做性| 精品毛片网大全| 日韩亚洲在线观看| 亚洲乱码国产乱码精品精天堂| 亚洲精品成a人在线观看| 欧美在线观看www| 日韩中文字幕第一页| 91亚洲国产成人久久精品网站| 欧美激情第一页xxx| 国产精品久久久久久久久借妻| 日韩电影大片中文字幕| 亚洲午夜未满十八勿入免费观看全集| 亚洲色图17p|