第一次見delete this的時候,沒覺得這是一項會有什麼特殊作用的技術,因此也就沒有特別關注。
昨日在source******.com上看state模式之c++實現的時候,看到它在狀態轉換的時候使用了delete this,感覺似乎還不錯。
作為一種「禁術」,使用的時候必須要相當小心才行,《c++ faq》裡提到所謂「小心」至少包括以下幾個方面:
this
物件是必須是用
new操作符分配
的(而不是用
new,也不是用
placement new
,也不是區域性物件,也不是
global
物件);
delete this
後,不能訪問該物件任何的成員變數及虛函式(
delete this
**的是
資料,這包括物件的
資料成員以及
vtable
,不包括函式**);
delete this
後,不能再訪問
this
指標。換句話說,你不能去檢查它、將它和其他指標比較、和
null
比較、列印它、轉換它,以及其它的任何事情;
個人認為保證以上禁忌列表基本手段可以包括:
將析構函式私有化
(如果有子類,則
protected
化,保證子類能夠正確繼承)
--以保證物件必須使用
new在堆上分配記憶體;
提供(可以在僅僅在基類中)destroy(void)
函式,裡面僅有一句delete this--以保證第三方能夠將分配的記憶體**;
(原文**:
2 4 請求物件
2.4.1.介紹 請求物件是在前端控制器,路由器,分發器,以及控制類間傳遞的簡單值物件。請求物件封裝了請求的模組,控制器,動作以及可選的引數,還包括其他的請求環境,如http,cli,php gtk。模組名可通過getmodulename 和setmodulename 訪問。控制器名可通過getco...
flask 請求物件
flask通過上下文變數request對外開放請求物件如下表 屬性或方法 說明form 乙個字典,儲存請求提交的所有表單字段 args 乙個字典,儲存通過url查詢字元傳遞的所有引數 values 乙個字典,form和args的集合 cookies 乙個字典,儲存請求的所有cookie header...
Request請求物件
一 request物件由伺服器建立,我們使用 瀏覽器訪問伺服器資源原理 二 request體系結構 其中,servlet 的service 方法引數列表是 servletrequest物件,httpservlet 的 doget 和 dopost 方法引數列表是用的 httpservletreque...