智慧型指標概念和使用

2021-09-29 15:55:53 字數 1712 閱讀 2689

目錄結構:

一 通過案例引入智慧型指標

二 智慧型指標的作用

三 設計輔助類實現智慧型指標作用

四 設計類模板實現智慧型指標作用

五 使用stl和boost提供的標準智慧型指標類模板處理問題

一 通過案例引入智慧型指標

有如下的程式:

#include

using namespace std;

class exam

exam(exam &obj)

~exam()

private:

int *ptr;

int main()

~point()

int *pin;

int count;

};class exam

exam(exam &obj)

exam &operator=(const exam &obj)

~exam()

private:

point *ptr;

int main()

smartptr(const smartptr &src):ptr(src.ptr),puse(src.puse)

smartptr &operator=(const smartptr &rhs)

t *operator->()

const t *operator->() const

t &operator*()

const t &operator*()const

~smartptr()

private:

void decruse() }

t *ptr;

size_t *puse;

int main(){/*

smartptr t1(new stub);

smartptr t2(t1);

smartptr t3(new stub);

t3 = t2;

t1->print();

(*t3).print();*/

smartptrt1(new string("mike"));

smartptrt2;

cout<<*t1庫的開發者:開發標準的實現智慧型指標的類模板

用庫中提供的智慧型指標模板類解決專案中的問題

1 使用stl提供的auto_ptr智慧型指標模板類:處理string *的情況

#include

#include

using namespace std;

int main()

{auto_ptr obj(new string(「mike」));

auto_ptr obj1;

cout<<*obj<2 使用boost庫中提供shared_ptr智慧型指標模板類處理string *的案例:

#include

#include

#include

using namespace std;

int main()

{boost::shared_ptr obj(new string(「mike」));

boost::shared_ptr obj1;

cout<<*obj

cout<<*obj1

智慧型指標和萬能指標

智慧型指標 智慧型指標 smart pointer 是儲存指向動態分配 堆 物件指標的類。除了能夠在適當的時間自動刪除指向的物件外,他們的工作機制很像c 的內建指標。智慧型指標在面對異常的時候格外有用,因為他們能夠確保正確的銷毀動態分配的物件。他們也可以用於跟蹤被多使用者共享的動態分配物件。智慧型指...

智慧型指標使用摘要

1.如果沒有拷貝 賦值等要求,優先選用scoped ptr 2.如果不需要放入容器中 放入容器中的元素型別必須是能拷貝的 優先選用scoped ptr 3.如果不需要自定義刪除器,優先選用scoped ptr 4.盡量不要用scoped array管理new出來的陣列,改用vector代替 5.只能...

C 智慧型指標使用

由於 c 語言沒有自動記憶體 機制,程式設計師每次 new 出來的記憶體都要手動 delete。程式設計師忘記 delete,流程太複雜,最終導致沒有 delete,異常導致程式過早退出,沒有執行 delete 的情況並不罕見。std auto ptr boost scoped ptr boost ...