我想new個(gè)對(duì)象過七夕,她卻拋了異常···
七夕又到了,單身汪們太難了,每年不僅要經(jīng)歷雙十一,要經(jīng)歷2.14,還要經(jīng)歷七夕節(jié),真是古今中外都不肯放過我們??!

不過對(duì)于咱們程序員來說,這都不是問題!只要你不是C語言,想要對(duì)象還不簡(jiǎn)單?new一個(gè)不就得了!

對(duì)象的類型
首先,new之前,得先定義對(duì)象的類型,就叫GirlFriend吧,繼承自基類Girl!
接下來要思考,這個(gè)GirlFriend該有哪些方法呢?
首先得要長(zhǎng)得漂亮吧:
bool?isBeatuiful();
其次,得做的一手好飯吧:
Food?cook();
嗯,要溫柔一點(diǎn),會(huì)撒嬌:
bool?tender();
不過也不能太粘著我,還是要去工作才行:
void?work();
差點(diǎn)忘了,最重要的一點(diǎn),要愛我,心里只能有我一個(gè):
void?loveMe();
好了,就先想到這些方法吧。
要全心全意對(duì)待女朋友,還得要允許她訪問你的空間,C++程序員們記得把女朋友設(shè)置為友元:
friend class GirlFriend;
和對(duì)象通信
接下來,要怎么和女朋友通信呢?
用個(gè)消息隊(duì)列?嗯,不行,處理不及時(shí)的話分分鐘要出事。
算了,就一個(gè)女朋友,還考慮什么高并發(fā)?。烤陀脗€(gè)簡(jiǎn)單的回調(diào)吧!
void?onMessage(Message?msg);Message要考慮的情況有點(diǎn)多:
enum?Message?{
??MSG_IMissYou,??????????//?我想你了
??MSG_WhatAreYouDoing,???//?你在干嘛
??MSG_GoShopping,????????//?陪我逛街
??MSG_IFeelUncomfortable,//?我不舒服
??MSG_IAmAngry,??????????//?我生氣了
??······
}
得要小心翼翼的處理這些消息,否則,嘿嘿,你懂得~
switch?(msg)?{
??case?MSG_IMissYou:
????say("miss?you?too");
????break;
??case?MSG_WhatAreYouDoing:
????say("I'm?coding...");
????break;
??case?MSG_GoShopping:
????takeMoney();
????break;
??case?MSG_IFeelUncomfortable:
????say("多喝熱水");
????break;
??case?MSG_IAmAngry:
????//?這個(gè)我也不知道,自己發(fā)揮吧
}
準(zhǔn)備工作做得差不多了,現(xiàn)在可以來new了!

new一個(gè)
Java同學(xué)要注意,new出來的對(duì)象引用要抓牢了,要是不小心松了手,就要被垃圾回收掉了~
//?Java
GirlFriend?gf?=?new?GirlFriend();
如果是一個(gè)C++程序員,new了之后還得要delete。不過,怎么能對(duì)女朋友進(jìn)行delete呢,你肯定不想發(fā)生這種事情吧?所以用智能指針shared_ptr吧!
不過要注意你們別循環(huán)引用,不然誰也走不了。就像生活中兩個(gè)人吵架總得有個(gè)人先讓步,不然就沒完沒了了~
//?C++
shared_ptr<GirlFriend>?gf(new?GirlFriend());
為了展現(xiàn)你的專一性,只愛她一個(gè),得加上final和const表示一下吧:
//?Java
final?GirlFriend?gf?=?new?GirlFriend();
//?C++
const?shared_ptr<GirlFriend>?gf(new?GirlFriend());

運(yùn)行一下
寫好了,咱們來運(yùn)行一下~

哦豁!GirlFriend的構(gòu)造函數(shù)拋出了異常
別急,來看看錯(cuò)誤提示:
error:?no?match?GirlFriend?found
原來是沒有找到符合要求的女朋友
別慌,咱們降低一點(diǎn)條件,把有工作這一項(xiàng)拿掉再試試:
error:?no?match?GirlFriend?found
額,還是不行,還得繼續(xù)降低要求,再把溫柔去掉吧,漂亮、會(huì)做飯、愛我難道還不夠嗎?
error:?no?match?GirlFriend?found
好吧,是時(shí)候做出真正的抉擇了,忍痛去掉會(huì)做飯!再試一次
error:?no?match?GirlFriend?found
怎么辦?只剩下漂亮和愛我了!我還不信這個(gè)邪了,愛我就好了,漂不漂亮的不重要。再來!
error:?no?match?GirlFriend?found

此刻已經(jīng)心如死灰,有個(gè)對(duì)象差不多湊活吧,管她愛不愛我,這是我最后的倔強(qiáng)。
error:?no?match?GirlFriend?found

欺人太甚了,我要來排查一下基類Girl的源碼,到底出了什么問題?
突然我在Girl的構(gòu)造方法里看到了一行:
assert(job != "程序員");
這可難不倒我們程序員,我決定(? ? ? ? ? ? ? ?)
猜猜我做了啥,留言區(qū)歡迎開腦洞!
—?【 THE END 】— 本公眾號(hào)全部博文已整理成一個(gè)目錄,請(qǐng)?jiān)诠娞?hào)里回復(fù)「m」獲?。?/span> 3T技術(shù)資源大放送!包括但不限于:Java、C/C++,Linux,Python,大數(shù)據(jù),人工智能等等。在公眾號(hào)內(nèi)回復(fù)「1024」,即可免費(fèi)獲取??!
