(=)賦值操作符
(=)賦值操作符注意事項
首先要判斷兩個運算元是否相等
返回值一定是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 的函式,我們可以對賦值操作符進行定義。該函式有返回值和形參表。...