物件的初始化和清理

2021-10-08 03:19:16 字數 753 閱讀 5086

建構函式和析構函式

構造:初始化 析構: 清理

建構函式的語法:類名(){} 析構函式語法:~類名(){}

1.建構函式沒有返回值也不寫void 1.建構函式沒有返回值也不寫void

2.函式名稱與類名相同 2.函式名稱與類名相同,在名稱前加~

3.建構函式可以有引數,也可以過載 3.建構函式不可以有引數,不可以過載

4.程式在呼叫物件時會自動呼叫構造,無需手動呼叫,且只會呼叫一次 4.物件銷毀前會自動呼叫析構函式,無須手動呼叫,呼叫一次

建構函式的分類及呼叫

按引數分:有參構造和無參構造(預設構造)

按型別分:普通構造和拷貝構造 三種呼叫方法:括號法;顯示法;隱式轉換法;

拷貝建構函式語法:類名(const 類名 &變數)

括號法注意:呼叫無參建構函式不能加括號,如果加了編譯器會認為是乙個函式宣告。

隱式轉換法注意: 不能利用拷貝建構函式 初始化匿名物件,編譯器會認為是物件宣告。

拷貝建構函式的呼叫時機:

三種情況:使用乙個已經建立完畢的物件來初始化乙個新物件

值傳遞的方式給函式引數傳值

以值方式返回區域性物件

構造函式呼叫規則:

如果使用者定義有參建構函式,c++不再提供預設無參構造,但是會提供預設拷貝構造/

如果使用者定義拷貝建構函式,c++不再提供其他建構函式『/

建立乙個類,c++編譯器至少給每個類新增三個函式:

預設構造(空實現) 析構函式(空實現) 拷貝建構函式(值拷貝)

C 物件的初始化和清理

物件的初始化和清理也是兩個非常重要的安全問題 乙個物件或者變數沒有初始狀態,對其使用後果是未知 同樣的使用完乙個物件或變數,沒有及時清理,也會造成一定的安全問題 c 利用了建構函式和析構函式解決上述問題,這兩個函式將會被編譯器自動呼叫,完成物件初始化和清理工作。物件的初始化和清理工作是編譯器強制要我...

C 類和物件 物件的初始化和清理

4.2.1 建構函式和析構函式 物件的初始化和清理也是兩個非常重要的安全問題 乙個物件或者變數沒有初始狀態,對其使用後果是未知 同樣的使用完乙個物件或變數,沒有及時清理,也會造成一定的安全問題 c 利用了建構函式和析構函式解決上述問題,這兩個函式將會被編譯器自動呼叫,完成物件初始化和清理工作。物件的...

java 初始化和清理

區別過載方法可通過 1.引數不同 2.引數相同,順序不同 過載的引數是基本型別時,可提公升也可窄化轉換 char型略不同,公升至int型 package com.learn public class demo06 class dog public void bark float f,int x pu...