複製建構函式與禁止複製即函式值傳遞的原理

2021-06-02 14:48:34 字數 1018 閱讀 8912

什麼是複製建構函式?一般都是系統有預設的複製建構函式,將類中的各個成員依次複製,我們基本不會手動使用它,如當物件產生副本時系統是通過複製建構函式來實現的。對於一般的程式開發來說它有什麼用呢?我們可以通過自定義複製建構函式來按照我們自己的方式進行類的複製,也可以禁止複製……

#ifndef student_h

#define student_h

#include using namespace std;

class student

;#endif // student_h

#include "../include/student.h"

student::student()

student::student(int num, string name)

student::student(student& st)

void student::print()

student::~student()

#include #include "include/student.h"

using namespace std;

int main()

{ student st0;

student st1(1,"lee");

st0.print();

st1.print();

cout<< "after copy" <

如果整個程式中沒有自定義複製建構函式,那麼void copystudent(student st);函式就會將乙個物件的成員拷貝到另乙個物件中,這個過程是通過副本st傳遞的。但通過定義複製建構函式後,st副本無法按預設方式拷貝,而是使用自定義的複製建構函式方式傳遞。這樣就可以實現禁止複製的效果。

本文是我學習了複製建構函式後寫的,但對它在開發中怎麼靈活使用還是一無所知,望同志們多多指教,有事例最好。另外通過學習我對函式中值的傳遞有了更為深刻的理解。

C 之 拷貝建構函式 即複製建構函式

主要探索淺拷貝和深拷貝 拷貝建構函式是一種特殊的建構函式,函式的名稱必須和類名稱一致,它的唯一的乙個引數是本型別的乙個引用變數。當出現類的等號賦值時,會呼叫拷貝函式 在未定義顯示拷貝建構函式的情況下,系統會呼叫預設的拷貝函式 即淺拷貝,它能夠完成成員的一一複製。當資料成員中沒有指標時,淺拷貝是可行的...

複製控制 複製建構函式

只有單個形參,而且該引數是對本類型別物件的引用。主要用於 1 根據另乙個同型別的物件顯示或隱式的初始化乙個物件 string a abc 呼叫複製建構函式將a初始化為abc string aa string 呼叫string 的建構函式,建立乙個新的物件,再呼叫 複製建構函式初始化aa string...

複製控制 複製建構函式

只有單個形參,而且該引數是對本類型別物件的引用。主要用於 1 根據另乙個同型別的物件顯示或隱式的初始化乙個物件 string a abc 呼叫複製建構函式將a初始化為abc string aa string 呼叫string 的建構函式,建立乙個新的物件,再呼叫 複製建構函式初始化aa string...