今天晚上回学校食堂吃饭,很是happy地搞了一盆麻辣香锅。忍住了向边上吃经济菜的白富美搭讪的想法,顿时有种变身高富帅的自豪。GC不在这个。。。
话说吃完饭,端起餐盘,顺便看了看边上白富美一眼,这才走向回收站,很是悠哉的将餐盘放上了残食台上。本来该好好地结束这次晚餐,可是,尼玛!
老子的手上被粘上了一坨油!
一坨油!
它在老子手上,像一坨翔一样让我恶心,我只好取出另外一张餐巾纸,将其弄掉。
尼玛,细细一想,餐巾纸真是神器。我以前一直有一个想法。若把在食堂吃饭当做类对象规则,那么,去阿姨那打饭就相当于构造函数,将餐盘送回就相当于析构函数。但是,这里面明显错误了。
若是我在送餐盘这个过程中不小心在手上粘上了一坨油。
那尼玛就是在析构函数中抛出了异常。
编译器会第二次调用析构函数吗?
你以为你爸是李刚呢。
所以,脏的餐盘洗干净才是构造函数,这是在给食物(资源)分配地盘。而从大妈那搞到食物,仅仅是你打开若干文件描述符,为将来使用资源做准备而已。而送回餐盘,就相当于关闭若干个文件描述符。而析构函数,是使用餐巾纸这个显式过程和洗餐盘这个隐式过程。
为什么说使用餐巾纸是显式过程呢。是因为哥看到有些哥们不用餐巾纸。。。这就是不定义析构函数。
但洗餐盘又是必须的,所以,不管你有没有用餐巾纸,这些事情都会有人去干的。
同理,不论你有没有定义析构,编译器总会为你搞上一些动作的。比如,释放内存。
OK,现在来说恶心的异常情况,那就是在回收餐盘时候不小心手上沾了一坨翔这种恶心的东西。
尼玛。如果你说你不管它,或者随便在衣服上擦干净了,老子就服了你了。
关闭文件描述符等资源。总会不小心沾惹异常。就像再小心,送餐盘的时候总会粘上点东西。
俗话说:常在河边站哪有不湿手。
你要是先把餐巾纸丢了,或者说先调用了析构,那你就爽了,这个异常,这坨翔会让你恶心到极点。
你若是不管它,你这手也比想干啥了。
你若是随便在衣服上擦,你整个人都恶心了。也就是说,整个系统就恶心了。
所以,骚年,哥用切身经验告诉你,一定要最后丢餐巾纸。
也就是说,有异常这种事情,一定要在析构之前干完。
好吧。就到这了。说得好恶心。