C 19 物件的構造(下)

2021-09-28 17:49:53 字數 1298 閱讀 9027

兩個特殊的建構函式:

無參建構函式: 當類中沒有定義建構函式時,編譯器預設提供乙個無參建構函式,並且其函式體為空。

拷貝建構函式: 當類中沒有定義拷貝建構函式時,編譯器預設提供乙個建構函式,簡單的進行成員變數的值複製

//(面試題)

class t

{};

//這裡面的其實裡面有隱藏的建構函式和拷貝建構函式

有乙個概念要理清:

在沒有任何建構函式的時候,編譯器才會為我們提供建構函式(這裡面拷貝建構函式也是建構函式

拷貝建構函式的引數: const  class_name&

text(const  text& t)
拷貝建構函式的意義:1.拷貝建構函式是相容c語言的初始化方式(會牽涉到拷貝建構函式)

2.初始化行為能夠符號預期的邏輯(即兩個是狀態一樣)

// c方式

int i = 10

int b = i;

// c++方式

深拷貝是深入到裡面再去申請記憶體的操作。

物理狀態:是指每個物件在記憶體中的值是否相同 。

#include class test

int getj()

int* getp()

/*test(const test& t)

*/test(int v)

void free()

};int main()

//如果沒重寫拷貝建構函式

//呼叫預設淺拷貝只是單純的賦值,賦值之後兩個類的在記憶體中狀態是一樣的

拷貝建構函式一般性原則:自定義拷貝建構函式,必需需要實現深拷貝

17 物件的構造

如果沒有賦初值,全域性儲存區的成員變數初始值系統預設為0,棧空間和堆空間上成員變數初始值系統預設為隨機數。從程式設計的角度,物件只是變數,c 中可以定義與類名相同的特殊成員函式 建構函式。建構函式沒有任何返回型別的宣告。建構函式在物件定義時自動呼叫。每個物件在使用之前都應該初始化,建構函式用於物件初...

11 物件的構造

目錄從程式設計的角度,物件只是變數,因此 問題 程式中如何對乙個物件進行初始化,使得不管在什麼地方建立類物件,其成員變數的初始值都為固定值?解決方案1 存在的問題 解決方案2 建構函式 示例 建構函式 注意 物件定義和物件宣告不同 建構函式的自動呼叫 class test test int v in...

17 物件的構造(中)

1 建構函式 建構函式和普通函式的區別 普通函式的函式名可以隨機定義,而建構函式的函式名和類名一致 普通函式有返回值,而建構函式沒有返回值 普通函式可以定義引數,那麼建構函式可以定義引數嗎?class test test t 定義物件並呼叫建構函式 int main 我們的整個編譯過程分為好幾步 1...