C 構造 析構的一些理解

2021-08-03 12:39:44 字數 927 閱讀 9162

wiki: c++類

effective c++ ——構造/析構/賦值運算子 : 構造/析構/賦值運算子

c++類四個預設函式—建構函式、析構函式、拷貝函式、賦值函式 : 建構函式、析構函式、拷貝函式、賦值函式

c++多個建構函式的問題

概要:

在c++中,每乙個類都會有乙個或多個建構函式,乙個析構函式,乙個賦值函式。

建構函式,包括:無參構造、有參構造、拷貝構造

本文主要是理解各建構函式的呼叫問題,即定義乙個物件後,呼叫的是哪個建構函式。

一、知識總結

當我們定義乙個空類時,編譯器缺省會產生4個成員函式:預設無參建構函式、拷貝建構函式、賦值函					數、析構函式。

其中預設的拷貝建構函式是淺拷貝。

如果我們在類中宣告了建構函式,那麼系統不再提供預設建構函式,此時如果還需要無參建構函式,則需要自己過載建構函式。

呼叫時,把握一點:

1、定義乙個新物件時,一定會有個建構函式被呼叫。根據定義時所賦的初始值來決定

該呼叫哪個建構函式。初始化時不會產生臨時物件。

2、有賦值操作,一定會呼叫賦值函式。根據右值的型別,決定是否要呼叫帶引數的構

造函式。賦值前會先產生臨時物件,然後再呼叫賦值函式。

二、程式演示

建構函式測試程式

#include "iostream"

using namespace std;

class mystring

{public:

mystring()

{m_data = null;

cout<<"無參建構函式"《三、關於拷貝建構函式

1、定義變數時,若定義時賦的初始值為該類的物件,則呼叫拷貝建構函式

2、當用按值傳遞方式傳遞或返回乙個物件時,編譯器會自動呼叫拷貝建構函式!

關於類的賦值 構造 析構的一些啟發

前情提要 在做資料結構課程設計第十題排列的時候,建立了乙個datalist的類,在sort類中呼叫以儲存乙個隨機序列。但,每一次排序要保證不在datalist的例項datalist上直接操作,因此每次進行不同的排列都要建立乙個新的datalist例項。在這其中包括sort類初始化的時候都遇見了一些情...

C 多個物件構造 析構 構造和析構的順序

include 多個物件構造和析構 1 當類中有成員變數是其它類的物件時,首先呼叫成員變數的建構函式,呼叫順序與宣告順序相同 之後呼叫自身類的建構函式 2 析構函式的呼叫順序與對應的構造函式呼叫順序相反 2 類成員中若有const修飾,必須在物件初始化的時候,給const int n 賦值 當類成員...

C 構造和析構

include using namespace std class b b b b b b int i data i b operator b b private int data b play b b int main output constructed by parameter 5 destr...