A-1 2023/5/25
Open-cascade/qt/C++
智能指针
-
智能指针:智能指针是一个类,由于指针的动态内存管理(new/delete)很容易出现内存泄漏的问题,因此定义一个智能指针类,里面包含了构造函数与析构函数,当指针对象被销毁时可以自动调用析构函数去释放内存,进而避免内存泄露的问题。
//这是一个智能指针类的基本定义 template<class T> class smartpointer{ private: T *ptr; public: //构造函数和析构函数 smartpointer(T *_ptr):ptr(_ptr){} ~smartpointer(){ if(ptr!=nullptr) { cout << "smartptr is deleted" delete ptr; ptr=nullptr; } } //重载运算符 *和-> T & operator *(){ return *ptr; } T *operator ->(){ return ptr; } }
-
C++提供了智能指针类 auto_ptr
#include<iostream> using namespace std; template<class T> class test_class { private: T a, b, c; public: void p() { cout << a << b << c << endl; } test_class(T x) :a(x), b(3 + x), c(x - 3) {} }; int main() { auto_ptr<int> test1(new int(666)); auto_ptr<test_class<int>> test2(new test_class<int>(6)); cout << *test1 << endl; //test2实际上是智能指针auto_ptr类,p并不是它的成员函数,但是却可以调用p,说明其达到了指针的效果 test2 -> p(); return 0; }
运行结果如图
OCC库
-
1、打开这个文件夹 opencascade-7.7.0,这里下载的是7.7.0版本,所以后缀是7.7.0。
2、打开文件夹后点击其中的draw.bat文件出现一个对话框,按照教程里的尝试即可,在这里我放几张图片。按照图片里的代码与教程,就可以打开相应的界面。
-
值得注意的是opencascade-7.7.0中samples文件夹,samples里面有qt和tcl两个文件夹,当然还有其他文件夹。qt包含了OCC在qt上实现的一些例子,也是我之后的学习重点。tcl文件夹里有着一系列.tcl文件。个人认为可以把其看作.bat文件,把.tcl文件里的代码一股脑的复制到draw的对话界面上,也能得到一样的内容。就是一个draw的批处理文件。以bottle.tcl为例子。
-
打开samples文件夹下的qt文件夹,直接点击Tutorial,注意没有后缀名,这只是一个快捷文件,可以右键打开文件位置看它的真身在哪,其实就是tutorial文件夹下的run.bat,点击这个bat文件也有一样的效果。打开之后应该是这样的。
-
首先点击File,新建文件,然后点击见面中出现的一个小瓶子(问号右边的一个按键),就可以出现瓶子。还可以右键瓶子和背景来改变瓶子和背景的颜色,等等。
这次就到这吧
(问号右边的一个按键),就可以出现瓶子。还可以右键瓶子和背景来改变瓶子和背景的颜色,等等。
[外链图片转存中…(img-HOfNGNpG-1685090758233)]
这次就到这吧