區別建構函式,複製建構函式和賦值操作符函式

2021-06-19 20:04:29 字數 1092 閱讀 5560

定義example類,該類給出了建構函式,複製建構函式和賦值操作符函式,各個成員函式輸出自己的函式名。主函式裡以不同方式使用example物件。

作為非引用形參,引用形參,動態分配,函式返回值,賦值操作,作vector容器元素,以此研究建構函式,複製建構函式和賦值操作符函式。

#ifndef _test_h_

#define _test_h_

#include #include class example

{public:

//建構函式

example():example(0)

{ >

#include "test.h"

using>

(1)作為vector的元素時,vc6.0與vs2010的處理完全不同,詳見上述兩圖紅色矩形的內容。

(2)對於堆記憶體的處理,如圖一下,程式結束時,對指標pexample所指的堆記憶體,vc6.0是不會主動釋放,故會產生記憶體洩露。

new與建構函式,複製建構函式的關係

在原exmaple類裡另新增乙個新的帶乙個引數的建構函式:

example(int>

std::cout<<"\t\t\texample(i)"<

在 new 操作符的背後,編譯器做了兩件事 :

1 計算 new後申請的資料的大小,然後呼叫函式 operator new開闢空間。

2 呼叫相應的建構函式(或複製建構函式)。

複製建構函式跟賦值建構函式的區別

1.何時呼叫複製建構函式 複製建構函式用於將乙個物件複製到新建立的物件中。也就是說,它用於初始化過程中,而不是常規的賦值過程中。類的複製建構函式原型通常如下 class name const class name 它接受乙個指向類物件的常量引用作為引數。例如,string類的複製建構函式的原型如下 ...

預設建構函式 建構函式 複製建構函式和賦值操作符

這幾個概念比較容易混淆,總結一下。預設建構函式是沒有引數 和類同名的建構函式。當乙個類沒有任何建構函式時,編譯器將會合成乙個預設建構函式。那麼編譯器合成的預設建構函式是做什麼用的呢?是初始化類的成員變數嗎?事實上不是。編譯器合成的預設建構函式只是滿足編譯器的需要,而不是按照程式設計師想的去做。更詳細...

C 賦值建構函式 複製建構函式

編譯器提供乙個不接受任何引數,也不執行任何操作的建構函式,稱之為預設建構函式 這是因為創造物件的時候總會呼叫預設建構函式 klunk klunk 定義 klunk lunk 宣告 使用預設建構函式 如果定義了建構函式,c 不會定義預設建構函式,如果希望建立物件時不顯示地對他進行初始化,則必須顯示的定...