void test_bhasptr()
class ahasptr
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;
};
/**********demo.cpp***********/
#include "iostream"
#include "plain-ptr.h"
using namespace std;
void test_ahasptr()
int main()
出現的一大串數字就是懸垂指標。
複製建構函式不再複製乙個指標。而是分配乙個新的int物件並初始化該物件以儲存與被複製物件相同的值。每個物件都儲存屬於自己的int值的不同副本,所以析構函式將不條件刪除指標。
/*****深複製*****value-ptr.h**********/
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)
void test_chasptr()
~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)
/****智慧型指標*********/
void test_bhasptr()
管理指標成員
include include plain ptr.h include value ptr.h include smart ptr.h using namespace std void test ahasptr void test chasptr void test bhasptr int main...
C 管理指標成員
1 c 中一般採用下面三種方法之一管理指標成員 1 指標成員採取常規行為。這樣的類具有指標的所有缺陷 具有指標成員且使用預設複製建構函式和賦值操作符,無法避免懸垂指標 兩個物件的指標成員指向同一記憶體,刪除了其中乙個指標指向的記憶體時,另乙個指標將不再指向有效的記憶體空間 2 類可以實現所謂的 智慧...
管理指標成員(智慧型指標)
簡單記錄下我的學習過程 為主 題外話 過幾天就要出去找工作了。這幾天在家看看曾經做過的題。如今想想時間過得真的好快,希望自己能找乙份自己愜意的工作。以下是學習心得 這幅圖非常好的闡述了僅僅能指標的概念,事實上智慧型指標就是乙個計數類!以後多用用就熟悉了。設計介面 int get ptr const ...