日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ Primer 第Ⅲ部分笔记——类设计者的工具

發(fā)布時間:2023/12/9 c/c++ 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ Primer 第Ⅲ部分笔记——类设计者的工具 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.對象移動

1.1右值引用

右值引用區(qū)別于普通引用,用兩個&表示

返回左值引用的函數(shù),連同賦值、下標、解引用和前置遞增遞減運算符返回左值

返回非引用的函數(shù),連同算術(shù)、關(guān)系、位以及后置遞增遞減運算符都生成右值

我們不能將左值引用綁定到一個右值上,但可以使用const左值引用或右值引用綁定到一個右值上

左值持久,右值短暫

我們不能將右值引用綁定到一個變量上

1.2 標準庫move函數(shù)

位于頭文件utility

int &&i1 = std::move(r2);

我們可以使用move函數(shù)將左值強制轉(zhuǎn)換為右值

這也意味著,我們使用move函數(shù)之后可以銷毀對象,也可以給對象賦予一個新值,但我們不能使用這個對象了

1.3移動構(gòu)造函數(shù)和移動賦值運算符

移動構(gòu)造函數(shù)的參數(shù)為:類名&&

這里引入一個新名詞 noexcept 不拋出任何異常,在參數(shù)列表后添加

我們在移動構(gòu)造函數(shù)中必須另類中的數(shù)據(jù)成員回歸成可析構(gòu)

移動賦值運算符函數(shù)類似,但前提是要檢查返回值和傳進來的右值地址是否相同

1.4移動迭代器

函數(shù)make_move_iterator函數(shù)接受一個迭代器,使其成為一個移動迭代器,將其與普通的迭代器使用即可

區(qū)別在于我們使用這個函數(shù)后,這個迭代器以后就無法使用了,另外使用時會觸發(fā)類的移動構(gòu)造函數(shù)

2.重載與調(diào)用函數(shù)對象

2.1 重載后置++--

vec operator++(int) {vec ret = *this;++*this;return ret; }

2.2函數(shù)調(diào)用重載

class add { public:int operator() (int i,int j){return i +j;} }; add Add; int i = Add(2,4);

2.3 lambda是函數(shù)對象

//假設(shè)有這么一個算法表達式 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();} }; stable_sort(words.begin(),words.end(),ShorterString());

2.4標準庫定義的函數(shù)對象

頭文件:functional

plus<int>add; int i = add(2,4); sort(vec.begin(),vec.end(),greater<int>());//按降序排序

2.5可調(diào)用對象于function

int (int,int);//是一個函數(shù)類型,接受兩個int,返回一個int int mod (int i,int j);//普通函數(shù) auto add = [](int i,int j) {return i + j;};//lambda struct divide{int operator() (int i,int j);//函數(shù)對象類 };

我們可以通過標準庫function來統(tǒng)一這三種類型

比如我們需要做一個桌面計算器

map<string,function<int(int,int)>>cal;//定義一個map cal["+"] = add; cal["%"] = mod; cal["/"] = divide();

但我們必須注意二義性的問題

如有必要,必須這樣做

int (*p)(int,int)=add; cal["+"] = p;

3.重載,類型轉(zhuǎn)換與運算符

3.1類型轉(zhuǎn)換運算符

基本形式:

operator type() const ;

4.類繼承

4.1虛函數(shù)

虛函數(shù)通常在基類前聲明virtual

為了防止派生類的虛函數(shù)并未覆蓋基類中的虛函數(shù),我們必須在派生類虛方法的參數(shù)列表后加上 override

如果將一個函數(shù)設(shè)為final,那么它的派生類不可覆蓋他

4.2回避虛函數(shù)的機制

必須顯式說明,Base::fun();

4.3抽象基類

若一個基類有一個函數(shù)在參數(shù)列表后加上了 =0

那么該基類成為抽象基類

抽象基類不能顯式聲明

4.4派生類與基類的轉(zhuǎn)換

假設(shè)D繼承B,有三種情況

只有公有繼承能讓用戶能直接使用派生類轉(zhuǎn)換為基類

任何繼承方式,D的成員函數(shù)和友元都可以使用派生類轉(zhuǎn)換為基類

只有公有與保護繼承,D的成員和友元可以使用轉(zhuǎn)換

轉(zhuǎn)載于:https://www.cnblogs.com/vhyz/p/7450251.html

總結(jié)

以上是生活随笔為你收集整理的C++ Primer 第Ⅲ部分笔记——类设计者的工具的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品产国自在拍 | 欧美三级视频在线观看 | 丰满少妇毛片 | 国产视频入口 | 欧美伊人网 | 91网站免费视频 | 19韩国主播青草vip | 乱淫的女高中暑假调教h | 欧美日韩一区二区视频在线观看 | 午夜免费一区 | 国产免费片| 日本福利一区二区三区 | 一区二区男女 | 无码人妻aⅴ一区二区三区玉蒲团 | 国产精品成人免费一区久久羞羞 | 黄色免费av网站 | 精品成人无码一区二区三区 | 亚洲国产精品视频在线观看 | 男人天堂中文字幕 | 免费av入口 | 国产精品国产三级国产aⅴ9色 | 一区二区欧美日韩 | 亚洲国产成人精品女人 | 好看的黄色录像 | 天天拍天天干 | 97超碰资源总站 | 日韩精品高清在线观看 | 成年人在线视频网站 | 91人妻一区二区三区蜜臀 | 成人av免费网站 | 蜜臀va| 国产免费中文字幕 | 国产美女视频网站 | 日韩精品久久久久久久的张开腿让 | 欧美一级艳片视频免费观看 | 午夜看片福利 | 久久偷看各类女兵18女厕嘘嘘 | 丝袜天堂| 成年人在线免费观看网站 | 中文在线日韩 | 久久久精品人妻一区二区三区四 | 最新av网址在线观看 | 国产午夜精品一区二区三区四区 | 一区二区91 | 亚洲资源网 | 精品精品精品 | 波多野42部无码喷潮在线 | 成人1区2区 | 天堂网中文字幕 | 啪啪.com| xxxxxx黄色 | 久操伊人 | 人妻体内射精一区二区三区 | 探花视频在线观看 | 欧美精品一区二区成人 | 特级av | 午夜精品亚洲 | 亚洲av无码一区二区二三区软件 | 最近中文字幕免费视频 | 日本一级黄色大片 | 欧美一级免费视频 | 午夜剧场免费在线观看 | 五月色综合 | 亚洲污片 | 涩涩视频在线 | 久久黄视频 | 免费看黄色小视频 | 北条麻纪在线观看aⅴ | 男人天堂综合 | 亚洲熟妇av日韩熟妇在线 | 无码精品黑人一区二区三区 | 亚洲日本中文字幕 | 国产美女精品久久久 | 99久久久国产精品无码网爆 | 精品午夜福利视频 | 精人妻一区二区三区 | 国产三级在线看 | 亚洲美女色视频 | 久久久久久一 | 日韩精品一区二区三区视频在线观看 | 黄页网站视频 | 日韩av线上 | 天天影视色 | 欧美黑粗硬 | 日韩区在线 | 欧美三级色图 | 色999在线观看 | 成人影视网址 | 国产精品ⅴa有声小说 | 欧美a一级片 | 日本中文字幕影院 | 亚洲视频在线观看免费 | 日本高清中文字幕 | 色漫在线观看 | 色呦呦网站入口 | 中文字幕高清在线 | 亚洲色成人www永久网站 | 精品国内自产拍在线观看视频 | 黄色一级片 |