關於建構函式的總結

2021-10-25 10:21:43 字數 1697 閱讀 5455

當類的例項進入作用域時,即物件被建立,則就會呼叫建構函式。建構函式的作用是:建立乙個物件時,建構函式可以對這個物件進行初始化。

建構函式名和類名相同。

建構函式沒有返回值。

建構函式可以在類內和類外定義。

建構函式可以過載。

建構函式在物件被建立時自動呼叫。

成員初始化列表,格式為:類名::類名(形參表):內嵌物件1(形參表),內嵌物件2(形參表)…

// person.**件

#pragma once

class

person

;// person。cpp檔案

person::

person

(short age ,

char

* name)

:age

(age)

,name

(name)

// main.cpp 檔案

#include

#include

"person.h"

intmain()

賦值方式,格式為:類名::類名(形參表)

// person.**件

#pragma once

class

person

;// person.cpp檔案

#include

"person.h"

person::

person

(short age ,

char

* name)

// main.cpp檔案

#include

#include

"person.h"

intmain()

兩種寫法的區別1

:方法一應該叫作初始化,方法二應該叫作賦值。二者是有本質的區別的。c++規定,物件的成員變數的初始化動作發生在進入建構函式本體之前。因此方法二的建構函式內屬性不能算是被初始化,是被賦值了。初始化發生的時間更早,發生在這些成員的default建構函式被自動呼叫之時。使用方法二的建構函式需要執行兩次copy構造。因此理論上使用方法一的成員初始化列表(member initialization list)方式的效率更高,因為比起先呼叫default建構函式然後再呼叫copy assignment操作符,單隻呼叫一次copy建構函式是比較高效的。

當需要儲存物件的副本,以便在後面執行過程中恢復物件的原始狀態,則可以使用複製建構函式實現。複製建構函式就是函式的引數是乙個已經初始化的類物件。因為比較簡單,直接上示例:

// person.h 檔案

#pragma once

class

person

;// person.cpp 檔案

#include

"person.h"

person::

person

(short age ,

char

* name)

person::

person

(person& copyperson)

// main.cpp 檔案

#include

#include

"person.h"

intmain()

節選自《effective c++》 ↩︎

關於建構函式的總結

前言 建構函式可以分為 1 不帶預設引數的建構函式,也叫做預設建構函式,如果自己不寫,編譯器會自動生成 2 帶有預設引數的建構函式,如果未指定引數,則需要的引數被初始化為預設值 3 拷貝建構函式 預設建構函式 多數情況下,編譯器為類生成乙個公有的預設建構函式,只有下面兩種情況特殊 1 乙個類顯示地宣...

關於建構函式 複製建構函式與析構函式的總結

建構函式 建構函式的作用 1 建立物件 2 初始化其值 建構函式所具有的的特性 1 建構函式的函式名與類名相同 2 沒有返回值 建構函式的執行順序 1 傳參 2 按照類中成員變數宣告順序,依次構造其成員 3 執行建構函式的函式體 建構函式有兩種過載形式 1 帶有引數的 2 無引數的,即預設建構函式 ...

關於建構函式的預設構造

拷貝建構函式 是用於當乙個 使用者自定義型別的物件 作為函式引數時,系統預設 的拷貝建構函式 不能達到目地,這時需要用到 使用者自己定義 的拷貝建構函式 通常是 類的私有成員裡有起到重要作用的指標變數 當進行函式引數的 值傳遞 時,系統會呼叫 拷貝建構函式 如果沒有 自定義 拷貝建構函式 則系統會呼...