第十三章 複製控制 智慧型指標的code實現

2021-04-12 19:31:26 字數 867 閱讀 2774

#include

#include

using namespace std;

class u_ptr  //定義乙個智慧型指標

~u_ptr()

class hasptr

hasptr(const hasptr& obj) : ptr(obj.ptr) , val(obj.val) // 複製建構函式

hasptr& operator=(const hasptr& rhs)

~hasptr()

private:

u_ptr *ptr;

int val;

public:

int * get_ptr() const

int get_int() const

void set_ptr(int *p)

void set_int(int i)

int get_ptr_val()

void set_ptr_val(int i)

int get_used_num() const

};void tmp(hasptr &test,hasptr &test2,hasptr &test3)

//the 1

//55  1

//copy 1

//55  2

//55  2

//=  1

//55  3

//55  3

//55  3

//tmp   1

//55  4

//55  4

//55  4

//55  4

//tmp out   1

//55  3

//55  3

// 55  3 

第十三章 複製控制

1 複製建構函式,在物件定義初始化時,會出現 此時的 不是賦值效果,而是複製建構函式的效果。2 複製建構函式,定義在私有中,則禁止了操作,除了友元 若在私有中只是宣告不定義,則任何都無法呼叫建構函式 3 容器是有複製建構函式的。4 類中指標成員有3種處理方式,一是複製指標的值共享所指物件,這樣會帶來...

C Primer 第十三章 複製控制

複製建構函式 賦值操作符和析構函式總稱為複製控制。編譯器自動實現這些操作,但類也可以定義自己的版本。複製建構函式是一種特殊建構函式,具有單個形參,該形參 常用 const 修飾 是對該類型別的引用。析構函式是建構函式的互補 當物件超出作用域或動態分配的物件被刪除時,將自動應用析構函式。不管類是否定義...

第十三章 拷貝控制

在定義任何 c 類時,拷貝控制操作都是必要部分。如果我們不顯示定義這些操作,編譯器也會為我們定義,但編譯器定義的版本的行為可能並非我們所想。拷貝初始化不僅在我們用 定義變數時會發生,在下列情況下也會發生 將乙個物件作為實參傳遞給乙個非引用型別的形參 從乙個返回型別為非引用型別的函式返回乙個物件 用花...