引用变量调用析构函数
Reference Variable Calling Destructor
考虑以下代码:
#include <iostream>
class Singleton
{
public:
// GetInstance returns an instance to an existing Singleton object
static Singleton& GetInstance()
{
static Singleton instance;
return instance;
}
// Destructor
~Singleton()
{
std::cout << "Singleton destructor" << std::endl;
}
private:
// Private constructor
Singleton()
{
std::cout << "Singleton constructor" << std::endl;
}
};
int main()
{
Singleton mySingleton = Singleton::GetInstance();
return 0;
}
其输出为:
Singleton constructor
Singleton destructor
Singleton destructor
似乎正在清理引用变量mySingleton
,因此调用析构函数两次。有什么办法可以避免这种行为吗?
您正在此处复制实例:
Singleton mySingleton = Singleton::GetInstance();
您还想使复制构造函数和赋值运算符私有,这将迫使您使用引用:
Singleton& mySingleton = Singleton::GetInstance();
相关文章:
- 析构函数调用
- 在具有向量的类构造函数中进行析构函数调用
- 从 c++ 中派生类的析构函数调用虚函数
- C++析构函数调用两次,堆栈分配的复合对象
- C++ 在析构函数调用之前删除的动态成员数组
- 析构函数调用c++中的一个向量
- Singleton模式中的手动析构函数调用:调用多次
- 从内部类的析构函数调用虚拟函数
- 与 boost odeint 集成期间的析构函数调用
- 堆栈展开如何与析构函数调用有关?
- C++:优化析构函数调用
- 以逗号分隔的表达式中的析构函数调用
- GCC 9.1 返回 void& 作为显式析构函数调用的结果类型。这是一个错误吗?
- 从C++中的虚拟析构函数调用虚拟方法
- 从指针返回对象时出现意外的析构函数调用
- 使用 decltype 显式析构函数调用
- C++析构函数调用了错误的对象
- 了解虚拟函数和析构函数调用
- 多重继承析构函数调用他自己和父析构函数?c++
- 析构函数调用表单不适当的库