15 在資源管理類中提供對原始資源的訪問

2021-10-18 20:04:32 字數 495 閱讀 2760

1- apis 往往要求訪問原始資源(raw resources),所以每乙個 raii class 應該提供乙個「取得其所管理之資源」的辦法。

2- 對原始資源的訪問可能經由顯示轉換或隱式轉換。一般而言顯示轉換比較安全,但隱式轉換對客戶比較方便。

​ 許多apis 直接指涉資源,我們只能繞過資源管理物件(resource-managing objects)直接訪問原始資源(raw resources)。(【注】也就是說這些api 只訪問最原始被拷貝的類,而不是猴毛變得孫悟空)

​ 這時需要乙個函式可以將 raii class 物件轉換為其所內含之原始資源,有以下兩種方法:

​ 智慧型指標 tr1::shared_ptr 和 auto_ptr 都提供乙個 get 成員函式,用來執行顯示轉換,也就是它會返回智慧型指標內部的原始指標(的復件)。

法-2: 令 font 提供隱式轉換函式,轉型為 fonthandle。

條款15 在資源管理類中提供對原始資源的訪問

對於資源管理類而言,有時候你需要處理原始資源 raw resources 的訪問。當你使用智慧型指標如auto ptr或tr1 shared ptr儲存資源類的時候。當你需要訪問智慧型指標指向的原始資源的時候,你有顯示轉換和隱式轉換兩個方法 顯示使用智慧型指標的get函式,隱式方法智慧型指標過載了指...

條款 15 在資源管理類中提供對原始資源的訪問

使用資源管理類來管理資源,使得我們不必直接處理資源,而交由類來管理,這很好。但是,有些api需要直接訪問資源,你不能給它傳遞乙個這樣的資源管理類物件。這就使得我們的資源管理類能夠解開類的封裝,能夠做到直接訪問資源。需要乙個成員函式,將raii class物件轉換為其所內含的原始資源,可以通過兩種途徑...

條款15在資源管理類中提供對原始資源的訪問

從條款13建立乙個智慧型指標 std shared ptr pinv creatinvestment 假設你希望某個函式處理investment物件 int daysheld const investment pi 然後想要這麼呼叫int days daysheld pinv 但是通不過編譯,因為d...