我希望使用一个智能指针指向一个对象,该对象将被很多不同的对象访问。因此,在所有指针都释放到它之前,我不想破坏它。智能指针将指向一个实例化几个对象的对象,该对象实例化几个对象,依此类推,这样您就可以通过这个指针访问所有单独的 System object。但是,假设我在 main 中创建智能指针为std::shared_ptr<System> object(new System);
然后假设我有另一个对象,所有其他实体都从该对象派生出一个静态 std::shared_ptr ,我将其设置为等于上面的对象。静态声明意味着它由编译器管理,而不是基于每个实例。所以假设所有从基类派生的对象都使用这个静态指针来访问 System object。这个智能指针何时被破坏?我需要在 main 中的那个指针之前销毁这个指针,谁的销毁应该将引用计数降至 0,从而销毁它指向的对象。所以我的问题是,什么时候静态声明的 std::shared_ptr 在事物方案中被破坏。或者即使一个指针被全局声明并被全部使用,这个对象什么时候会被破坏?
基类看起来像这样:
class Base
{
public:
static shared_ptr<System> m_System;
};
int main()
{
std::shared_ptr<System> system(new System);
Base::m_System = system;
/*
other stuff
*/
return 0;
}
还有另一件事有人可以帮助我,我对 const-ness 不是很好,我希望那个静态指针是一个不能被派生类更改的常量。但是如果它是 const 我不能像我在 main 中那样初始化它,对吧?那么我将如何声明它以使其为 const,但我仍然可以将它设置为最初像这样的指针。