#include <iostream>
using namespace std;
class Base
{
public:
int i ;
private:
virtual ~Base() {
}
};
Base gb;
void main()
{
Base b;
}
K:/Code Boost/PrivateDestructor.cpp(14): error #373: "Base::~Base()" is inaccessible
Base gb;
^
K:/Code Boost/PrivateDestructor.cpp(17): error #373: "Base::~Base()" is inaccessible
Base b;
^
起作用就是阻止产生stack变量或者全局变量
-------------
#include <iostream>
using namespace std;
class Base
{
public:
int i ;
private:
virtual ~Base() {
}
};
void main()
{
Base * b = new Base;
delete b;
}
error #373: "Base::~Base(unsigned int)" is inaccessible
delete b;
^
--------------------
#include <iostream>
using namespace std;
class Base
{
public:
int i ;
void Release() {
delete this;
}
private:
virtual ~Base() {
cout<<"Des"<<endl;
}
};
void main()
{
Base * b = new Base;
b->Release(); //Output : Des
}
本文通过几个示例展示了如何使用C++中的私有析构函数来防止类实例作为全局变量或堆栈变量被创建。同时介绍了如何通过成员函数安全地删除私有析构函数所属的对象。
5495

被折叠的 条评论
为什么被折叠?



