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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

《C++标准程序库》学习笔记1--第二章第三章

發(fā)布時間:2023/11/29 c/c++ 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《C++标准程序库》学习笔记1--第二章第三章 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?————————— 第二章 —————————

1.(P11)

C++規(guī)定:除了以typename修飾外,template內(nèi)的任何標(biāo)志符號都被視為一個值(value)而非一個型別。

eg.

?

template?<class?T>?
class?MyClass{?
????typename?T::SubType?
*ptr;?
};

?

?

這里typename指出SubType是class T中定義的一個型別,因此ptr是一個指向T::SubType的指針,否則SubType會被當(dāng)作一個static成員,于是:

T::SubType *ptr被認(rèn)為是SubType與ptr的乘積。

?

2.(P12)

template class 的 member template問題:

下面例子,即使兩個型別之間可以自動轉(zhuǎn)換,如int和double,如果我們對assign()使用不同的template型別,也會出錯。

?

template?<class?T>?
class?MyClass{?
private:?
????T?value;?
public:?
????
void?assign(cosnt?MyClass<T>&?x)?
????{?
????????
//?x?must?have?same?type?as?*this?
????????value?=?x.value;?
????}?
????...?
};

?

?

再看這個:

?

template?<class?T>?
class?MyClass{?
private:?
????T?value;?
public:?
????template?
<class?X>??//?member?template?
????void?assign(cosnt?MyClass<X>&?x)?
????{?
????????
//?allows?different?template?types?
????????value?=?x.getValue();?
????}?
????T?getValue()?
const{?
????????
return?value;?
????}?
????...?
};

?

?

現(xiàn)在,assign()的參數(shù)x和*this的型別并不相同,所以兩個類也就不同
不能再直接存取MyClass<>的private成員和 protected成員,取而代之,
此例中使用了getValue()

?

3.(P14)

對基本型別的顯示初始化

如果采用不含參數(shù)、明確的constructor調(diào)用語法,基本型別會被初始為

eg.

?

int?i1;???//?undefined?value
int?i2?=?int();???//?initialized?with?zero

?

?

?

4.(P16)

異常問題。

?? ①.異常處理不是錯誤處理

?? ②.? void f() throw(xxx) 是f()拋出XXX類型的異常,

????? 而void f() throw()? 是指f()拋出任何異常,這里好多人容易弄錯。

?

5.(P16)

命名空間。

eg.

?

namespace?tankywoo{?
????
class?A;?
????
class?B;?
????...?
}?
...

?

?

則using tankywoo::A會使A成為當(dāng)前作用域內(nèi)代表tankywoo::A的同義字

而using namespace tankywoo會使namespace內(nèi)的所有名字曝光(A和B)。

?

?————————— 第三章 —————————

?6.(P23)

命名空間
上一篇也講過。
使用C++標(biāo)準(zhǔn)程序庫的任何標(biāo)識符時,有三種選擇:(以下都以cout為例)
①直接指定標(biāo)識符:

std::cout?<<?"Tanky?Woo"?<<?std::endl;

?

②使用using declaration,可使我們不再需要加上”std::”

???using?std::cout;
???cout?
<<?"Tanky?Woo"?<<?std::endl;

?

③使用using directive,那么std內(nèi)定義的所有標(biāo)識符都有效。

??using?namespace?std;
??cout?
<<?"Tanky?Woo"?<<?endl;

?

?

7.錯誤處理和異常處理
異常處理這塊接觸的少,而且第三章這里也是簡略的講到,所以這里先放著,有經(jīng)驗了再補(bǔ)。

?

8.配置器(Allocators)
同上。?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/tanky_woo/archive/2011/01/23/1942611.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的《C++标准程序库》学习笔记1--第二章第三章的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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