詳解C 賦值操作符 智慧型指標編寫

2022-09-28 02:51:15 字數 1211 閱讀 4193

(=)賦值操作符

(=)賦值操作符注意事項

首先要判斷兩個運算元是否相等

返回值一定是return *this; 返回型別是type&型,避免連續使用=後,出現bug

比如:class test

test& operator = (const test& obj)

return *this;}};

編譯器預設提供的類函式

包括了:建構函式,析構函式,拷貝建構函式, (=)賦值操作符

智慧型指標

智慧型指標的由來

在以前c程式裡,使用malloc()等函式動態申請堆空間時,若不再需要的記憶體沒有被及時釋放,則會出現記憶體洩漏,若記憶體洩漏太程式設計客棧多,

則會直接導致裝置停止執行,特別是嵌入式裝置,可能有些裝置一上電就要執行好幾個月.

在c++裡,為了減少記憶體洩漏,所以便引出了智慧型指標

介紹注意

比如ptr->value的->:

當ptr的型別是普通指標型別時,等價於:(*ptr).mem

當ptr的型別是類時,等價於:(ptr.operator->())->value等價於:( *(ptr.operator->()) ).value

所以->操作符函式的返回型別是type*,返回值是乙個指標變數本身(不帶*)

接下來個示例,指向乙個int型的智慧型指標

#include

using namespace std;

class point

int* operator -> ()

int& operator *()

~point()

bool isnull()

int* operator -> ()

int& operator *()

www.cppcns.com point& operator = (const point& t)

return *this;

}~point()

{cout

執行列印:

operator =()      

p=null:1              // point  p的成員已被釋放

*p2=5

~point()

~point()

但是,還有個缺點,就是這個智慧型指標僅僅只能指向int型別,沒辦法指向其它型別.

總結本文標題: 詳解c++-(=)賦值操作符、智慧型指標編寫

本文位址:

19 C 賦值操作符 初步編寫智慧型指標

賦值操作符 賦值操作符注意事項 首先要判斷兩個運算元是否相等 返回值一定是return this 返回型別是type 型,避免連續使用 後,出現bug 比如 class test test operator const test obj return this 注意 指標物件之間賦值是不會呼叫 複製...

C 智慧型指標詳解

自c 11起,c 標準提供兩大型別的智慧型指標 1.class shared ptr實現共享式擁有 shared ownership 概念。多個智慧型指標可以指向相同物件,該物件和其相關資源會在 最後乙個引用 reference 被銷毀 時候釋放。為了在結構複雜的情境中執行上述工作,標準庫提供了we...

C 賦值操作符

定義類時,編譯器會自動幫我們定義的有四個 建構函式 析構函式 複製建構函式 賦值操作符。賦值操作符定義了該型別的物件賦值時會發生什麼。過載操作符是一些函式,其名字為operator後跟著所定義的操作符的符號。通過定義名為operator 的函式,我們可以對賦值操作符進行定義。該函式有返回值和形參表。...