例子演示了osg中的拷貝,深拷貝和淺拷貝。
淺拷貝只拷貝指標,指向同乙個內容。
深拷貝,指標和所指向的內容都拷貝。
拷貝的全部內容都在copyop中,看看這個類吧:
enum options
;定義了乙個列舉,可以進行淺拷貝,以上內容的深拷貝。
來看看它是怎麼實現拷貝的,
定義了很多的operator()方法,copyflags _flags;代表著copyop可以拷貝的內容。
在copyop.cpp檔案中定義了乙個巨集
#define copy_op( type, flag ) \
type* copyop::operator() (const type* obj) const \
用於型別的拷貝,下面還分別定義了referenced、stateattribute、nodecallback的拷貝,
但是實現的內容大體相同。看看這個巨集吧:
如果引數有效,並且copyop可以拷貝,則對指定的型別進行osg::clone(obj, *this);操作,否則直接返
回型別的指標。
這裡說一下const_cast,就是乙個型別的轉換,但返回的內容不受const限制。
來看看這個osg::clone(obj, *this);
通過這個實現的深拷貝,它的實現在osg::ref_ptrobj = t->clone(copyop);這句話,這
句話直接指向了指定型別的clone方法。以node為例,看看node幹了,現了深拷貝。
回到例子中,這個例子就沒有其他可以過多說明的了,mycopyop繼承copyop,列印出拷貝的內容資訊。
json解析例子
jackson解析json jackson 解析轉換json為物件 param jsonstring param clazz 實體型別 return comment public static object getobjectfromjsonbyjac string jsonstring,class...
python xml解析例子
coding utf 8 created on thu apr 16 23 18 27 2015 author shifeng 功能 解析cdr sample.xml檔案,輸出格式為dnorm接收的格式,並將訓練集的 label 寫入到文件中 xml檔案 見csdn資源共享 import codec...
APACHE 指令 解析例子
rewriteengine on rewritecond 1 index php images robots txt rewriterule index.php 1 l 1 開啟執行時的重寫引擎 2 1 對rewriterule的 的反向引用。該句表示 對 1進行 index php images ...