警惕!C 裡面「 」不一定就是等於(賦值)。

2021-06-18 10:34:43 字數 778 閱讀 9014

作者 「九天雁翎」,鏈結

讓我們來現在看乙個這樣的程式:

#include 

using namespace std;

class hasptr

hasptr& operator=(const hasptr &rhs)

~hasptr()

};int main()

這是看起來是乙個沒有任何問題的程式,並且在指標的**處理上非常好,用的是值型指標來處理類裡面的指標,在vc(以後都是指vc++.net 2005)中編譯也可以通過,在dev-c++4.9.9.0 中編譯執行都沒有問題。但是在vc中執行卻會出問題。原因在**?經我論壇發帖求教,是因為hasptr b = a; 語句其實並不是賦值,而是呼叫了建構函式。不信?證明如下:

#include

using namespace std;

class hasptr

hasptr(const hasptr &orig):ptr(new int(*orig.ptr)),val(orig.val)

{ cout<<"use me(copy constructor)"{int ivala = 5;

hasptr a(ivala,5);

hasptr b = a;

ivala = 6;

cout<<*(a.ptr)<<*(b.ptr)《這一點在vc和在dev-c++中都是一樣的。你會發現呼叫的都是copy constructor(複製建構函式),不過據說之所以在dev-c++中沒有出錯,是因為可憐的dev-c++檢測能力太差。。。。。。。。。。。

成功不一定就是成功

有一天,烏鴉和豬一起坐飛機。豬聽到頭等艙的烏鴉問空姐 小妞,過來,有酒嗎?空姐禮貌的拒絕了,這時烏鴉憤怒地吼道 連這個都沒用開個毛飛機啊?滾!豬覺得成功人士的氣度太牛了。豬一心渴望成功,於是模仿豬的行為 小妞過來,有酒嗎?空姐的回答仍然是拒絕。豬也憤怒地吼 連這個都沒用開什麼飛機?滾!五分鐘以後,飛...

逃避不一定躲得過,面對不一定最難過

國王有七個女兒,這七位美麗的公主是國王的驕傲。她 們那一頭烏黑亮麗的長髮遠近皆知。所以國王送給她們每人一百個漂亮的髮夾。有一天 早上,大公主醒來,一如往常地用髮夾整理她的秀髮,卻發現少了乙個髮夾,於是她偷偷地到了二公主的房裡,拿走了乙個髮夾。二公主發現少了乙個髮夾,便到三公主房裡拿走乙個髮夾 三公主...

放虎不一定歸山

放虎不一定歸山 魏書侯淵傳 載,北魏大都督侯淵,率領七百騎兵,疾奔襲擊擁兵數萬的葛榮部將韓樓。他孤軍深入敵方腹地,帶著一股銳氣,在距韓樓大本營一百多里地之處,將韓樓的一支五千餘人的部隊一下子就打垮了,還抓了許多俘虜。侯淵沒有將俘虜當 包袱 背,而是將他們放了,還把繳獲的馬上口糧等東西都發還給他們。侯...