我有一个通用类,它在不同的上下文中使用--有时作为静态变量,有时作为堆栈/堆上的普通变量。
当作为普通变量使用时,析构函数在超出作用域时必须被调用--就像正常一样。可执行文件用于嵌入式目标,其中闪存是一个有限的资源,永远不会退出,为此,我希望禁用这个“退出”代码。
下面是一个例子来说明这个问题。A是在正常情况下需要析构函数的类,而不是静态变量所需的类。
struct Abstract {
virtual ~Abstract() {}
};
struct A : public Abstract {
int i = 0;
};
static A a;
static A b;
下面是由:
在C++编程语言中,有以下示例(3.2.4节)。
unique_ptr<Shape> read_shape(istream& is);
void user()
{
vector<unique_ptr<Shape>> v;
while (cin)
v.push_back(read_shape(cin));
draw_all(v);
// call draw() for each element
rotate_all(v,45);
// call rotate(45) for each e
我正在做一个项目,它应该能够在运行时通过dlopen加载动态链接库。
核心框架已经完成,它确实在工作,但我对如何正确管理由库分配到堆上的对象有一些疑问。该库的接口只有一个方法,该方法返回一个指向在库中静态分配的对象的指针,该对象是具有virtual方法的公共类的子类型
为了更好地解释它,我将提供我希望它如何工作的存根:
// header common to the core and to the libraries
class BaseSetting {
..
}
class DerivedSetting1 : public BaseSetting { .. }
class Deriv