c c 學習筆記 (4)

2021-06-28 16:14:14 字數 1713 閱讀 9977

類的基本思想是資料抽象和封裝。資料抽象是一種依賴於介面和實現分離的程式設計技術。

對於類中的方法,this形參是乙個隱式定義的。實際上,任何自定義名為this的引數或變數的行為都是非法的。且我們說this是指象本物件。

引入的const 函式。其引入的意義承上,以下例來說:一般情況,成員函式繫結的this指標並不是乙個頂層const的指標,所以若我們定義使用乙個頂層const的物件呼叫成員函式,必須沒有合適的函式呼叫。所以引入成員const函式,其內的隱藏的this指標是乙個s*const 。

struct s

預設建構函式的概念:當類不宣告任何建構函式時,編譯器才會自動地生成預設建構函式,預設建構函式無需任務引數。

編譯器建立的建構函式,又稱為合成的預設建構函式。

=default 的意義:等價於預設的建構函式。此意味著類的成員變數中凡是內建型別,均可將按照其預設值初始化。此=default既可以在類的外部,也可以在類的外部,其區別是在外部不是內聯的,在內部是內聯的。

友元宣告只能出現在類的內部。

mutable 型別成員可以const成員函式中改變。

我們只能在乙個常量物件上呼叫const成員,另一方面,雖然可 以在非常量物件上呼叫常量版本或非常量版本,但最好匹配乙個非常量版本。還有一點需要注意的是,乙個const成員函式,此時this將是乙個指向const的指標而*this是const物件。const成員函式和非const成員可構成過載。

友元在類中的宣告,僅表示在友元中可以可以使用類中的成員,並不代表其已宣告。在使用前,應在使用其的最前方宣告且

如果成員是const,引用,或者屬於某種未提供預設建構函式的類型別,必須通過建構函式初值列表為這些成員提供實值。

#include using namespace std;

struct si

};struct s

};int main()

s(string a){}

};void f(s);

f(1);//會呼叫f(s(1))

f("233");//呼叫出錯,轉換只能一步,可改為f(string("233"));

聚合類,所謂聚合類,便如老式c中的結構一般,全部是public成員,沒有任務建構函式,沒有類內初始值,沒有基類,沒有virtual函式。此類聚合函式可以通過{}直接賦初值。

字面值常量類,資料成員都必須是字面值型別,類必須至包含乙個constexpr建構函式。如果乙個資料成員類內初值,則內建型別成員的初始值必須是一條常量表示式或者如果成員屬於某種類型別,則初始化必須使用成員自己的constexpr建構函式。類必須使用析構函式的預設定義。

類的靜態成員。類的靜態成員可以public或private 。靜態資料成員的型別可以是常量,引用,指標,類型別。訪問類的靜態成員可以通過類訪問,也可以通過物件訪問 。類的內部靜態成員函式可以在外也可以在內定義,但在外定義時,static不能出現。通常情況下,類的靜態型別不在類的內部初始化(除非其為cosnt 或constexpr限定的)。

class t

int t::e =8;//在類外部初始化時必須指明其型別。

非靜態成員不能作為成員函式的預設實參,因為它 的值本身屬於物件的一部分。

靜態資料成員的型別可以是其所屬類的型別,指標有具有同樣的用法,但普通成員卻不能。

class c

靜態成員函式不含有this指標。不能呼叫返回它。

c c 學習筆記 4

c c 的控制流跟c 的差不多,分別有if else else if while for do while break continue以及goto.對於if else的習題為對於一下折半查詢的例子,用while迴圈語句共執行2次測試,其實可以只用一次,於是要求改寫,原 如下 int binsear...

C C學習筆記

1.儲存型別 標準c語言為變數 常量 函式定義了4種儲存型別 extern,auto,static,register,它們分別用乙個關鍵字 儲存型別說明符 來說明。這4種儲存型別可分為兩種生存期限 永久的 即整個程式執行期間都存在 extern和static 和臨時的 即暫時儲存在堆疊和暫存器中 a...

C,C 學習筆記

1.求a的n次方 標頭檔案pow a,n a,n都為double 2.關於指標的一些小測試 includeusing namespace std int main int a 8 int m 3 cout 3.sort位於 algorithm 中,sort p,p n 預設公升序排列。4.inclu...