侯捷C 筆記

2021-10-19 07:45:45 字數 1440 閱讀 3563

1.如果是類中唯讀函式後面沒有加上const,這樣如果變數定義成const,而函式沒寫成const,這樣編譯期會困惑。

2.相同class的各個物件objects互為友元。

3.建構函式初始化用:,比{}裡面初始化效率更高。

4.函式返回值寫成void時,應該考慮鏈式賦值,如果是void就行不通了。

5.拷貝賦值函式,需要檢測自我賦值。

6.一般函式的變數都有乙個棧存放變數,函式(作用域)結束記憶體自動釋放,但是new是獲取heap,用完自己釋放空間。static變數直到程式結束生命週期才會結束。

7.static函式沒有this pointer,也就只適合使用static變數。

8.函式模板,class與typename互通,沒有區別。

9.explicit關鍵字的作用就是防止類建構函式的隱式自動轉換 c++ explicit關鍵字詳解

10.復合composition-has a。構造由內而外,析構由外而內。

11.虛函式

non-virtual函式:你不希望子類derived class重新定義override它

virtual函式:你希望子類重新定義它,且你對它已經有預設定義

pure virtual函式:你希望子類一定要重新定義它,你對它沒有預設定義

12.namespace的用法

13.類模板

14.仿函式 為什麼要用仿函式?

仿函式(functors)   仿函式的作用:它既能想普通函式一樣傳入給定數量的引數,還能儲存或者處理更多我們需要的有用資訊。

15.uniform initialization 用大括號braces{}統一初始化。

int  j{};//j初值就是0

int* p{};//p初值就是nullptr

16.如果定義的建構函式加上explict,那麼for loop自動型別轉換會報錯。 for(const c& elem:vs)

17.拷貝構造不能過載

19.臨時物件就是右值,右值不可以放在左邊。&&是右值語法,是一種指標的拷貝,淺拷貝,但是原指標會作廢。

侯捷 C 標準11 14

本篇記錄學習 侯捷 c 標準11 14 一 演進 環境與資源 1 c 2.0的新特性,包括語言的部分和標準庫的部分。tr1是2003年的版本,即c 1.0。二 variadic templates 1 數量不定的模板引數,引數個數和引數型別都未定。三 spaces in template expre...

侯捷c 物件導向(上)

一 c 程式設計簡介 1 基於物件 只有乙個class的程式設計 object based 物件導向 幾個class的程式設計 object oriented 2 class的經典分類 class without pointer members e.g complex 複數 class with p...

C 侯捷 委託和繼承

物件導向的設計主要是看怎麼組織自己的類。composite是個容器,他既可以放composite也可以放primitive,所以vector中的型別是兩個的父類。同時他就得包含乙個add方法,可以新增composite或primitive。這種結構要解決的問題的解法就是叫做component設計模式...