#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
}