簡單記錄下我的學習過程 (**為主)
【題外話】過幾天就要出去找工作了。這幾天在家看看曾經做過的題。
。。如今想想時間過得真的好快,希望自己能找乙份自己愜意的工作。
以下是學習心得:
這幅圖非常好的闡述了僅僅能指標的概念,事實上智慧型指標就是乙個計數類!以後多用用就熟悉了。
//設計介面
int *get_ptr() const
int get_int() const
void set_ptr(int *p)
void set_int(int i)
int get_ptr_val()const
void set_ptr_val(int val)const
private:
int val;
int *ptr; //有指標成員,一般都是淺複製
};#endif // plain-ptr_h_included
smart-ptr.h
#ifndef smart-ptr_h_included
#define smart-ptr_h_included
class u_ptr
~u_ptr()
};class bhasptr
bhasptr(const bhasptr &orig):ptr(orig.ptr),val(orig.val)//複製建構函式
bhasptr& operator=(const bhasptr&);
~bhasptr()
//設計介面
int *get_ptr() const
int get_int() const
void set_ptr(int *p)
void set_int(int i)
int get_ptr_val()const
void set_ptr_val(int val)const
private:
int val;
// int *ptr;
u_ptr *ptr; //這裡使用智慧型指標類
};bhasptr& bhasptr::operator=(const bhasptr &rhs)
#endif // smart-ptr_h_included
value-ptr.h
#ifndef value-ptr_h_included
#define value-ptr_h_included
class chasptr
chasptr(const chasptr &orig)
:ptr(new int(*orig.ptr)),val(orig.val){}
chasptr& operator=(const chasptr&);
~chasptr()//三原則:一起寫複製函式、=操作符函式和析構函式
//設計介面
int *get_ptr() const
int get_int() const
void set_ptr(int *p)
void set_int(int i)
int get_ptr_val()const
void set_ptr_val(int val)const
private:
int val;
int *ptr; //有指標成員。一般都是淺複製
};chasptr& chasptr::operator = (const chasptr &rhs)
#endif // value-ptr_h_included
main函式
#include #include "plain-ptr.h"
原始資料:#include "smart-ptr.h"
#include "value-ptr.h"
using namespace std;
void test_ahasptr()//淺拷貝&&懸垂指標
{ int i=42;
ahasptr p1(&i,50);
ahasptr p2=p1;//淺拷貝
cout《常規指標類(淺拷貝):
42,50
42,50
改動以後:
0,50
0,50
66值型類(深拷貝):
原始資料:
0,12
0,12
改動以後:
0,12
6,24
智慧型指標類(計數類):
原始資料:
75,88
75,88
改動以後:
15,88
15,22
hello world!
智慧型指標 強弱智慧型指標
在平時編寫 的時候經常會用到new來開闢空間,而我們開闢出來的空間必須得手動去delete他,但是如果程式設計師忘記去手動釋放那邊會出現乙個麻煩的問題,記憶體洩漏!或者是一塊記憶體被多個函式同時使用時,如果其中乙個函式不知道還有其他人也在使用這塊記憶體而釋放掉的話同樣也會引起程式的崩潰。引起記憶體洩...
智慧型指標和萬能指標
智慧型指標 智慧型指標 smart pointer 是儲存指向動態分配 堆 物件指標的類。除了能夠在適當的時間自動刪除指向的物件外,他們的工作機制很像c 的內建指標。智慧型指標在面對異常的時候格外有用,因為他們能夠確保正確的銷毀動態分配的物件。他們也可以用於跟蹤被多使用者共享的動態分配物件。智慧型指...
指標(3)智慧型指標總覽
scoped ptr不能被複製,shared ptr能複製 使用boost scoped ptr的時候必須注意,它不允許進行複製操作,一旦宣告了乙個指向某記憶體空間的指標,那麼就不可以通過another p p 的方式來分配記憶體空間的新所有權。auto ptr不能指定刪除器 因而不能管理記憶體之外...