自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

解析C++老手也會(huì)出現(xiàn)的問題

開發(fā) 后端
下文講述C++老手也會(huì)遇到的C++問題,第一條就是: const原則:在C++中最好趨向與使用const來修飾它前面的那個(gè)類型。

對(duì)于剛剛接觸到C++的用戶來說,C++確實(shí)擁有比別的開發(fā)語言更復(fù)雜的問題, 學(xué)習(xí)C++時(shí)應(yīng)該注意由易至難,循序漸進(jìn),要成為C++老手,不是那么容易的,必須要花很大的努力。

如:const int a;和int const b;中,雖然兩種具有相同的意義,但是最好利用后面的那種情況,后面的更加可讀,因?yàn)椋篿nt const我們可以很清楚地看到const是修飾int,而前面的那種方法中,我們就不那么輕易知道到底const 的具體涵義。由后面的那種方法我們可以知道const指一個(gè)恒定的整形。Int *const b,指的是一個(gè)恒定的指針b,這個(gè)指針指向一個(gè)整型。

所以這個(gè)指針的內(nèi)容可以改變,但是它的指針值也就是b的值不能變,相應(yīng)的int const *b,指的是一個(gè)指向恒定整型內(nèi)容的指針b,也就是說這個(gè)b的內(nèi)容可以變,但是開始的b所指向的地址中的內(nèi)容不能在程序當(dāng)中通過b來改變。volatile對(duì)上面的原則也適用,使用類型T做為類型變量已經(jīng)作為了模板參數(shù)的慣例,用來表示函數(shù)或者類所接受的類型參量可以用所有的類型。#t#

C++的模板的類型參量前,最好盡量使用typename來代替class。在編譯時(shí)期,模板被編譯兩次;實(shí)例化之前:檢查模板代碼本身,查看語法是否正確;在實(shí)例化期間,檢查模板代碼,查看是否所有的調(diào)用都有效。

當(dāng)使用函數(shù)模板,并且引發(fā)模板實(shí)例化的時(shí)候,編譯器需要查看模板定義。在函數(shù)實(shí)參的類型的推導(dǎo)中,如果類型出現(xiàn)不匹配現(xiàn)象則會(huì)出現(xiàn)編譯錯(cuò)誤。如果要解決這編譯錯(cuò)誤則有以下幾種方法解決:對(duì)傳入的實(shí)參進(jìn)行類型轉(zhuǎn)換成匹配類型后傳入。顯示指定模板函數(shù)的全特化(不能為偏特化,因?yàn)楹瘮?shù)不支持偏特化)類型。

例子如下所示:

  1. template < typename T >   
  2. T  & max(T  & value1,T  & value2)  
  3. {   
  4.    return  value1 > value2 ? value1:value2;  
  5. }   
  6.    
  7. 調(diào)用max( 3 , 4.1 )會(huì)出現(xiàn)編譯錯(cuò)誤,解決的辦法:  
  8.  1 .max(static_cast < double > ( 3 ), 4.1 );  
  9.  2 .max < double > ( 3 );  
  10.  3 .將函數(shù)的模板參數(shù)從一個(gè)改為兩個(gè)。 

在模板函數(shù)內(nèi)部不能指定默認(rèn)的模板參數(shù)。函數(shù)不能采用偏特化的方法來實(shí)現(xiàn)類型的遞歸,但是它可以利用函數(shù)重載的方法來實(shí)現(xiàn)類型的轉(zhuǎn)換。相對(duì)于8而言類能使用偏特化的方法來實(shí)現(xiàn)類型的遞歸。

并且它的仿函數(shù)也可以使用重載operator()來實(shí)現(xiàn)函數(shù)重載方法。但是它的一個(gè)問題就是在調(diào)用仿函數(shù)的時(shí)候一定要加上它的實(shí)例化參數(shù)類型,以及調(diào)用它的構(gòu)造函數(shù)。函數(shù)調(diào)用的時(shí)候可以采用由參數(shù)的類型來反推函數(shù)的模板參數(shù),這是仿函數(shù)所不能的。所以我們?cè)诰幊痰倪^程當(dāng)中一定要注意這些不同技術(shù)之間的優(yōu)點(diǎn)和不足,看看哪些更適合我們。

在調(diào)用非標(biāo)準(zhǔn)函數(shù)的時(shí)候最好要與調(diào)用標(biāo)準(zhǔn)函數(shù)區(qū)分開來,這樣不致于使用程序產(chǎn)生歧義的錯(cuò)誤。做法是:在變量或者函數(shù)的前面加上全局標(biāo)識(shí)符。

責(zé)任編輯:chenqingxiang 來源: NET130
相關(guān)推薦

2010-01-28 13:15:43

C++參數(shù)

2010-01-26 10:13:45

學(xué)習(xí)C++

2009-08-20 15:54:48

從C#到C++

2011-04-11 09:43:25

C++C

2020-06-14 08:55:24

網(wǎng)絡(luò)安全信息泄露網(wǎng)絡(luò)釣魚

2014-11-26 10:23:09

2010-01-25 18:24:11

C++

2010-01-21 17:30:12

C++復(fù)雜

2010-01-15 17:38:37

C++語言

2012-08-07 09:37:23

虛擬化

2022-05-05 08:00:00

團(tuán)隊(duì)敏捷流程

2010-06-04 16:12:39

MYSQL_ASSOC

2010-04-15 13:36:48

Oracle恢復(fù)

2012-08-03 08:57:37

C++

2022-10-28 19:00:00

Python

2011-04-21 15:04:30

C#

2023-09-17 22:50:23

C++編程

2022-06-13 10:07:13

物聯(lián)網(wǎng)開發(fā)物聯(lián)網(wǎng)

2010-04-23 10:30:17

Oracle移植

2010-01-27 10:29:39

C++代碼解析
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)