相关疑难解决方法(0)

C++中的引用计数

我正在用C++实现一个数学库.该库将被编译为DLL,因此使用它的人只需要类的定义的头文件.

我班级的用户将是不熟悉该语言的人.但是,有些对象可能会在程序的几个部分中被引用.由于我不指望他们做内存管理,我想自己做.因此,我必须实现引用计数(垃圾收集不可能).

我想让那个引用计数尽可能透明,例如......

// Define a Bézier curve
CVecList pts;
pts.Add(Vector(0,0,0));
pts.Add(Vector(0,0,100));
pts.Add(Vector(0,100,0));
pts.Add(Vector(0,100,100));
CCurve* c1 = new CBezier(pts);

// Define a 3rd order B-Spline curve
pts.Clear();
pts.Add(Vector(0,0,0));
pts.Add(Vector(0,200,100));
pts.Add(Vector(0,200,200));
pts.Add(Vector(0,-200,100));
pts.Add(Vector(0,-200,200));
pts.Add(Vector(0,0,0));
CCurve* c2 = new CBSpline(pts,3);

// The Bézier curve object must be deleted automatically
// because the only reference to it has been released
// Similar to IUnknown::Release() in COM
c1 = c2;
Run Code Online (Sandbox Code Playgroud)

当我定义表面对象时,事情变得有点棘手,因为一些表面是根据两条曲线定义的:

CVecList pts;
// ...
CCurve* f = new CBezier(pts);

pts.Clear();
// ...
CCurve* …
Run Code Online (Sandbox Code Playgroud)

c++ reference counting

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

counting ×1

reference ×1