兩個建構函式,乙個賦值函式的細節

2021-04-14 02:32:13 字數 914 閱讀 2529

乙個類可以第一次生成例項時,僅可以通過1:建構函式 或者 2:copy建構函式生成!

深拷貝,前拷貝:僅發生在1:copy建構函式 或2:copy assignment函式裡!

資源申請僅發生在:1:建構函式 或2:copy assignment函式裡

也就是說,copy建構函式任務重大!要完成兩個任務!

建構函式,及賦值函式僅完成各自的任務即可!

今天,因為copy建構函式僅完成了深拷貝,沒有完成資源申請的任務debug的好長時間,當是一次複習吧。

copy建構函式的完整特別重要!!!

當類內部涉及到指標時,要麼完整的實現該函式,要麼

私有化宣告下!

classa a(); // :呼叫建構函式

classa b=a; // :呼叫copy建構函式 相當於 classa b(a);

classa classa::operator+(const classa& rhs)

///classa a;

classa b;

classa c;

c = a+b;    // :1:+算符裡面return語句呼叫copy建構函式,生成臨時變數tmp

// :2:=號呼叫 copy assainment函式 c=tmp

///classa a;

classa b;

classa c = a+b;// :1:+算符裡面return語句呼叫copy建構函式,直接生成c!!!!

example:

classa

classa( const classa&  rhs)

classa& operator=(const classa& rhs)

}

Linux open 乙個函式,兩個函式原型

open 在手冊中有兩個函式原型,如下所示 int open const char pathname,int flags int open const char pathname,int flags,mode t mode 這樣的函式原型有些違背了我們的直覺。c語言是不支援函式過載的,為什麼 ope...

兩個特別的建構函式

無參建構函式 沒有引數的建構函式 當類中沒有定義建構函式時,編譯器預設提供乙個無參建構函式,並且其函式體為空 拷貝建構函式 引數為const class name 的建構函式 當前類物件的引用 當類中沒有定義拷貝建構函式,編譯器預設提供乙個拷貝建構函式,簡單的進行成員變數的複製。例項一 1 incl...

C 類中乙個構造函式呼叫另乙個建構函式

class a a int aa,int bb,int cc 上面類中,已經有乙個建構函式,形參有兩個,我們又過載乙個有3個形參的建構函式,為了減少 量,就想著讓3個引數的構造函式呼叫2個引數的建構函式,然後在執行一些自己的 這就如同派生類先呼叫基類的同名函式,在執行自己特有的 這種機制如何實現呢?...