vtk智慧指標
1.引用指標
#include <vtkSmartPointer.h>
#include <vtkBMPReader.h>
#include <vtkImageData.h>
#include <vtkObject.h>
//如果很多物件有相同的值,在程式裡沒有必要將這個值儲存多次,更好的方法是讓所有物件共享這個值。引用計數就是這樣的技巧
//引用物件是個簡單的垃圾回收體系,只要其他物件引用某一個物件,這個物件就會增加一個引用計數,當最後引用物件的物件移除,引用物件就會自動析構
int main()
{
//先讀入了一個bmp影象 new建立新物件初始的引用計數值就等於1
vtkSmartPointer<vtkBMPReader>reader = vtkSmartPointer<vtkBMPReader>::New();
reader->SetFileName("../vtk-logo.bmp");
reader->Update();
std::cout << "Reference Count of reader->GetOutput(Before Assignment)="
<< reader->GetOutput()->GetReferenceCount() << std::endl;
//沒有新new物件 只是引用了之前的 計數器+1
vtkSmartPointer<vtkImageData>image1 = reader->GetOutput();
std::cout << "Reference Count of reader->GetOutput(Assign to image1)="
<< reader->GetOutput()->GetReferenceCount() << std::endl;
std::cout << "Reference Count of image1="
<< image1->GetReferenceCount() << std::endl;
vtkSmartPointer<vtkImageData>image2 = reader->GetOutput();
std::cout << "Reference Count of reader->GetOutput(Assign to image2)="
<< reader->GetOutput()->GetReferenceCount() << std::endl;
std::cout << "Reference Count of image2="
<< image2->GetReferenceCount() << std::endl;
system("pause");//要是寫return 0視窗閃一下就沒了==
}
2.智慧指標
其實我們之前寫的程式碼都是用智慧指標的,心臟的那個用的就全是原始指標,可能也是不涉及引用的問題吧。但是萬萬不可混著用,啥叫混著用?左邊有vtkSmartPointer<vtkImageData>image1右邊vtkImageData::New()。
而且如果沒有給物件分配記憶體,仍然可以使用智慧指標。比如vtkSmartPointer<vtkImageData>image1 = reader->GetOutput();
智慧指標型別同樣可以作為函式的返回值
vtkSmartPointer<vtkImageData> MyFunction()
{
vtkSmartPointer<vtkImageData> myObject = vtkSmartPointer<vtkImageData>::New();
std::cout<<"MyFunction::myObject reference count = "<<myObject->GetReferenceCount()<<std::endl;
return myObject;
}
呼叫的時候
vtkSmartPointer<vtkImageData> MyImageData = MyFunction();
同樣,上面那行程式碼左側不可以是原始指標。
需要注意一點:
當建立一個智慧指標型別的物件,然後改變他的指向,這時候引用計數就會出錯==
by the way 執行時的型別識別,應該還是很有用的==
IsA()函式~標頭檔案#include<type_info>
相關文章
- 智慧指標指標
- [CPP] 智慧指標指標
- 什麼是智慧指標?為什麼要用智慧指標?指標
- openfoam 智慧指標探索指標
- 智慧指標學習指標
- 【c++】智慧指標C++指標
- C++智慧指標C++指標
- 智慧指標之手撕共享指標shared_ptr指標
- UE4 智慧指標指標
- 批註:智慧指標分析指標
- C++11 智慧指標C++指標
- 「C++」理解智慧指標C++指標
- auto_ptr 智慧指標指標
- SMART POINTER(智慧指標) (轉)指標
- 智慧指標用法學習指標
- 指標+AI:邁向智慧化,讓指標應用更高效指標AI
- C++ 用智慧指標這樣包裝 this 指標是否可行C++指標
- C++進階(智慧指標)C++指標
- C++11智慧指標用法C++指標
- C++ 智慧指標詳解C++指標
- [CareerCup] 13.8 Smart Pointer 智慧指標指標
- NULL 指標、零指標、野指標Null指標
- C++標準庫有四種智慧指標C++指標
- C++筆記(11) 智慧指標C++筆記指標
- 話說智慧指標發展之路指標
- c++ 智慧指標用法詳解C++指標
- C++智慧指標簡單剖析C++指標
- c++ auto_ptr 智慧指標C++指標
- 【C++智慧指標 auto_ptr】C++指標
- Linux 核心裡的“智慧指標”Linux指標
- Spear Parser(一):智慧指標類薦指標
- 野指標 空指標指標
- 智慧指標-使用、避坑和實現指標
- C++11 新特性之智慧指標C++指標
- 正確使用auto_ptr智慧指標指標
- C++11新特性之智慧指標C++指標
- c++ auto_ptr類 智慧指標C++指標
- C++智慧指標模板類複習C++指標