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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

c++ 函数模板_C/C++编程笔记:C++入门知识,深入解析C++函数和函数模板

發布時間:2025/3/19 c/c++ 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ 函数模板_C/C++编程笔记:C++入门知识,深入解析C++函数和函数模板 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本篇要學習的內容和知識結構概覽

函數的參數及其傳遞方式

1. 函數參數傳遞方式

傳值:

傳變量值: 將實參內存中的內容拷貝一份給形參, 兩者是不同的兩塊內存

傳地址值: 將實參所對應的內存空間的地址值給形參, 形參是一個指針, 指向實參所對應的內存空間

傳引用:

形參是對實參的引用, 形參和實參是同一塊內存空間

2. 對象作為函數參數, 也就是傳變量值

將實參對象的值傳遞給形參對象, 形參是實參的備份, 當在函數中改變形參的值時, 改變的是這個備份中的值, 不影響原來的值

像這樣:

3. 對象指針作為函數參數, 也就是傳地址值

形參是對象指針, 實參是對象的地址值, 雖然參數傳遞方式仍然是傳遞方式, 因為形參和實參的地址值一樣, 所以它們都指向同一塊內存, 我們通過指針更改所指向的內存中的內容, 所以當在函數中通過形參改變內存中的值時, 改變的就是原來實參的值

像這樣:

對于數組, 因數組名就是代表的數組首地址, 所以數組也能用傳數組地址值的方式

4. 引用作為函數參數, 也就是傳地址(注意: 這里不是地址值)

在函數調用時, 實參對象名傳給形參對象名, 形參對象名就成為實參對象名的別名. 實參對象和形參對象代表同一個對象, 所以改變形參對象的值就是改變實參對象的值

像這樣:

優點: 引用對象不是一個獨立的對象,不單獨占內存單元, 而對象指針要另外開辟內存單元(內存中放實參傳過來的地址),所以傳引用比傳指針更好用。

5. 默認參數

不要求程序在調用時必須設定該參數, 而由編譯器在需要時給該參數賦默認值.

規則1:當程序需要傳遞特定值時需要顯式的指明. 默認參數必須在函數原型中說明.

如果函數在main函數后面定義, 而在聲明中設置默認參數, 在定義中不需要設置默認參數

像這樣:

如果函數在main函數前面定義, 則在定義中設置默認參數

像這樣:

規則2:默認參數可以多于一個,但必須放在參數序列的后部。

像這樣:

可以有一個默認參數:void PrintValue(int a, int b, int c = 0);

可以是有多個默認參數:void PrintValue(int a, int b = 0, int c = 0);

不可以在中間設置默認參數:void PrintValue(int a, int b = 0, int c);

規則3:如果一個默認參數需要指定一個特定值時,則在此之前的所有參數都必須賦值

6. 使用const保護數據

用const修飾要傳遞的參數, 該函數只能使用參數, 而無權修改參數, 以提高系統的自身安全.

像這樣:

函數返回值

C++函數返回值類型可以是除數組和函數以外的任何類型

當返回值是指針或引用對象時, 需要注意函數返回值所指的對象必須存在, 因此不能將函數內部的局部對象作為函數返回值, 因為函數內, 局部變量或者對象在函數運行完畢后內存就釋放了

1. 返回引用的函數

函數可以返回一個引用, 目的是為了讓該函數位于賦值運算符的左邊

格式: 數據類型 & 函數名(參數列表);

像這樣:

2. 返回指針的函數

返回值是存儲某種數據類型數據的內存地址, 這種函數稱為指針函數

格式: 數據類型 * 函數名(參數列表);

像這樣:

3. 返回對象的函數

格式: 數據類型 函數名(參數列表);

像這樣:

4. 函數返回值作為函數參數

如果函數返回值作為另一個函數的參數, 那么這個返回值必須與另一個函數的參數類型一致

像這樣:

內聯函數

1. 內聯函數的概念

使用關鍵字inline聲明的函數稱為內聯函數, 內聯函數必須在程序中第一次調用此函數的語句出現之前定義, 這樣編譯器才知道內聯函數的函數虛, 然后進行替換

像這樣:

2. 注意

在C++中, 除具有循環語句, switch語句的函數不能說明為內聯函數外, 其它函數都可以說明為內聯函數.

3. 作用

使用內聯函數可以提高程序執行速度, 但如果函數體語句多, 則會增加程序代碼量.

函數重載和默認參數

1. 函數重載

一個函數名具有多種功能, 具有多種形態, 稱這種我為多態性, 一個名字, 多個函數

函數重載要滿足的條件:

參數類型不同或者參數個數不同

像這樣:

2. 函數重載與默認參數

當函數重載與默認參數相結合時, 能夠有效減少函數個數及形態, 縮減代碼規模.

這樣我們每種數據類型只保留一個函數即可完成我們的功能, 直接少了兩個函數.

像這樣:

如果使用默認參數, 就不能對參數個數少于默認個數的函數形態進行重載, 只能對于多于默認參數個數的函數形態進行重載.

像這樣:

函數模板

從而上面可以看出, 它們是邏輯功能完全一樣的函數, 所提供的函數體也一樣, 區別僅僅是數據類型不同, 為了統一的處理它們, 引入了函數模板.

現在我們的函數從4個縮減成一個, 但是我們的功能沒有減少, 反而增加了. 比如我們可以計算char, float類型

1. 什么是函數模板

在程序設計時沒有使用實際存在的類型, 而是使用虛擬的參數參數, 故其靈活性得到加強.

當用實際的類型來實例化這種函數時, 就好像按照模板來制造新的函數一樣, 所以稱為函數模板

格式: 一般用T來標識類型參數, 也可以用其它的

Template

像這樣:

當應用函數模板與具體的數據類型連用時, 就產生了模板函數, 又稱為函數模板實例化

2. 函數模板的參數

函數模板名(參數列表);

我們可以將參數列表的數據強制轉換為指定的數據類型

像這樣:int sumValue2 = sumWithValue(3.2, 5.1);

我們將參數列表里的數據強制轉換為int類型, 再參與計算

也可以樣:double sumValue2 = sumWithValue(3.2, (double)5);

我們也可以將參數列表里的單個參數進行強制類型轉換, 再參與計算

不過我們一般不會加上模板參數.

3. 使用關鍵字typename

用途就是代替template參數列表中的關鍵字class

像這樣

template

只是將class替換為typename, 其它一樣使用.

強烈建議大家使用typename, 因為它就是為模板服務的, 而class是在typename出現之前使用的, 它還有定義類的作用, 不直觀, 也會在一些其它地方編譯時報錯.

總結:

可能對于初學者來說, 函數有點不是很好理解, 包括我當初也是, 不要想得過于復雜, 其實它就是一段有特定功能的代碼, 只不過我們給這段代碼起了個名字而已, 這樣就會提高代碼的可讀性和易維護性。

自學C/C++編程難度很大,不妨和一些志同道合的小伙伴一起學習成長!

C語言C++編程學習交流圈子,關注+私信【C/C++編程】微信公眾號:C語言編程學習基地

有一些源碼和資料分享,歡迎轉行也學習編程的伙伴,和大家一起交流成長會比自己琢磨更快哦!

總結

以上是生活随笔為你收集整理的c++ 函数模板_C/C++编程笔记:C++入门知识,深入解析C++函数和函数模板的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人免费网站在线观看 | 日韩精品久久久久久 | 亚洲国产aⅴ成人精品无吗 日韩乱论 | 亚洲人成人网 | 午夜视频在线免费播放 | 亚洲巨乳在线 | 欧美一级片黄色 | 四虎成人精品在永久免费 | 贝利弗山的秘密1985版免费观看 | 五月的婷婷| 亚洲30p | 精品人妻人人做人人爽 | 欧美片在线观看 | 丁香花电影免费播放在线观看 | 九九免费精品视频 | 天堂av亚洲 | 亚洲永久免费精品 | 五月天三级 | 一级黄色短视频 | 亚洲成人 av | 亚洲大片免费 | 国产香蕉精品视频 | 四虎永久网址 | 日本黄色录像片 | 精品久久影视 | 日韩精品观看 | 成人av色 | 中文视频一区 | 免费在线看黄色片 | 97超碰人人干 | 欧美成人精品在线 | heyzo久久| av不卡网 | 欧美激情一区二区三区四区 | 九色porny视频 | 成年网站在线观看 | 97超碰人人模人人人爽人人爱 | 在线视频啪 | 88xx成人永久免费观看 | 久久免费黄色网址 | 白浆在线播放 | 亚洲色图88 | 日韩精品一区在线播放 | 欧美日韩国产不卡 | 日韩在线一二三区 | 欧美性猛交乱大交 | 99久久久无码国产精品性波多 | 91在线精品入口 | 国产又粗又长 | 色婷婷aⅴ一区二区三区 | 哺乳期给上司喂奶hd | 国产精品30p| 亚洲免费影视 | 日韩永久免费视频 | 亚洲a影院| 日韩美女视频网站 | 麻豆蜜桃wwww精品无码 | 欧美一区二区在线视频 | 国内成人精品视频 | 日本在线国产 | 久久亚洲综合色 | 午夜资源 | 黄色网页在线 | 久久久一二三区 | 激情综合网站 | 无码一区二区三区免费视频 | 美国免费高清电影在线观看 | 亚洲国产精品尤物yw在线观看 | 亚洲中文字幕在线观看 | 69久人妻无码精品一区 | 亚洲乱妇老熟女爽到高潮的片 | 色爱五月天 | 久久久精品区 | 中文字幕在线视频网站 | jizzzxxxx| 91国内精品久久久 | 女警白嫩翘臀呻吟迎合 | 国产精品亚洲专区无码牛牛 | 韩国午夜影院 | 青娱乐最新视频 | 午夜视频福利网站 | 日韩国产一区二区三区 | 琪琪午夜伦理影院7777 | 中文字幕人妻精品一区 | 黄视频网站在线观看 | 欧美精品第1页 | 久久国产精品久久精品国产 | 亚洲精品视频大全 | 无码国产精品一区二区免费式直播 | 日本三级吹潮 | 欧美小视频在线 | 中文字幕成人网 | 婷婷在线免费 | 大胸喷奶水www视频妖精网站 | 男女啊啊啊视频 | 国产福利免费看 | 奇米色综合 | 麻豆日产六区 | 天天做天天爱天天操 |