C 程式設計學習筆記 複習 拾遺 3

2021-09-01 12:39:33 字數 2201 閱讀 4976

例4.1:類中資料成員是字串

#include #include //字串函式宣告所在的標頭檔案

string類是c++提供的字串類,其主要功能是對字串進行操作。

string類定義的變數稱為字串物件,該物件可以直接用字串常量賦值,也可呼叫string類中定義的成員函式。

例4.2:連線字串例項

#include #include //字串函式宣告所在的標頭檔案,devcpp和moodle平台都可以省略

例4.4:日期類中各種構造函式呼叫的例項

#include using namespace std;

class date

其中, 《拷貝建構函式名》與該類名相同;

拷貝建構函式用於使用已知物件的值建立乙個同類的新物件

把物件作為實引數進行函式呼叫時,系統自動呼叫拷貝建構函式實現把物件值傳遞給形參物件;

函式的返回值為物件時,系統自動呼叫拷貝建構函式對返回物件值建立乙個臨時物件,然後再將這個臨時物件值賦給接收函式返回值的物件。

拷貝建構函式需要定義的情況是資料成員是指標。

#include #include using namespace std;

class cstuscore

int main()

int main()

不是必須的,通常預設析構函式即可(無參,函式體為空)

必須定義析構函式的情況:

1.建構函式開啟乙個檔案,使用完檔案時,需要關閉檔案。

2.從堆中分配了動態記憶體區,在物件消失之前必須釋放。

無返回型別,但是不要加void。

無引數,因此不存在析構函式過載,只有1個析構函式。

在物件釋放時由系統自動呼叫。

如果程式中未宣告,則系統自動產生出乙個預設形式的析構函式。

析構函式與建構函式的功能相對應,所以析構函式名是建構函式名前加乙個邏輯反運算子「~」

析構函式以呼叫建構函式相反的順序被呼叫。

該類定義的建構函式在物件之外分配一段堆記憶體空間,撤銷時,由析構函式收回堆記憶體。通過動態陣列申請和釋放,解決了指標成員指向外部(main函式中)位址的問題。

#include #include using namespace std;

class cstuscore

//深拷貝

//重新定義拷貝建構函式。學生類中姓名是乙個指標,指向各自由new建立存放姓名字串的記憶體空間首位址。

#include using namespace std;

class point

point(point& p);

~point()

int getx()

int gety()

private:

int x,y;

};point::point(point& p)

point fun(point q);//函式宣告

//不要在返回指向區域性變數或者臨時物件的引用。

函式執行完畢之後,區域性變數和臨時物件將消失,

引用將指向不存在的資料。

int main()

//程式結束前呼叫4次析構函式,釋放物件n、s、p、m

point fun(point q)//形參是物件,引數傳遞時呼叫拷貝建構函式建立物件q

執行結果:

拷貝建構函式被呼叫

拷貝建構函式被呼叫

ok析構函式被呼叫

析構函式被呼叫

p=22,35

s=12,20

析構函式被呼叫

析構函式被呼叫

析構函式被呼叫

析構函式被呼叫

注意,析構函式以呼叫建構函式相反的順序被呼叫。

C 程式設計學習筆記 複習 拾遺 2

建構函式用於建立類物件,初始化其成員。析構函式用於撤銷類物件。若物件定義時若未顯式初始化,與變數類似,全域性物件和靜態物件在定義時初值為0,區域性物件在定義時初值為不確定的值。一旦建立乙個物件,物件通常都需要有乙個有意義的初值。1.在類中定義乙個具有初始化功能的成員函式。每當建立乙個物件時,就呼叫這...

C 程式設計學習筆記 複習 拾遺 5

封裝性 物件的狀態資訊隱藏在物件內部,不允許外部程式直接訪問物件內部資訊,而是通過該類所提供的方法來實現對內部資訊的操作與訪問。類外如何訪問被封裝的成員 private 和 protected成員 通過物件名.公有成員函式 良好的封裝性,考慮角度 將物件的成員變數與實現細節隱藏起來,不允許外部訪問。...

C 程式設計學習筆記 複習 拾遺 9

c 中有兩種繼承 單一繼承和多重繼承。對於單繼承,派生類只能有乙個基類 對於多繼承,派生類可以有多個基類。乙個類從多個基類派生的一般形式是 class 類名1 訪問控制 類名2,訪問控制 類名3 訪問控制 類名n 類名1繼承了類名2到類名n的所有資料成員和成員函式,訪問控制用於限制其後的類中的成員在...