OSGCopy例子解析

2021-07-07 07:16:42 字數 825 閱讀 4011

例子演示了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 ...