C++-析构函数

#include 
#include 

using namespace std;

class NoName
{
public:
	NoName():pstring(new std::string),i(0),d(0)
	{
		//打开文件
		//连接数据库
		//动态分配内存
		cout << "构造函数被调用了!" << endl;
	}
	~NoName();	//析构函数只有一个,不能重载,没有参数,如果自己写了析构函数,那也要自己写复制构造函数和赋值操作符
	NoName(const NoName& other);
	NoName& operator=(const NoName& rhs);
private:
	std::string* pstring;
	int i;
	double d;
};
NoName::NoName(const NoName& rhs)
{
	pstring = new std::string;
	*pstring = *(rhs.pstring);
	i = rhs.i;
	d = rhs.d;
}
NoName& NoName::operator=(const NoName& rhs)
{
	pstring = new std::string;
	*pstring = *(rhs.pstring);
	i = rhs.i;
	d = rhs.d;
	return *this;
}
NoName::~NoName()
{
	//关闭文件
	//关闭数据库连接
	//回收动态分配的内存
	cout << "析构函数被调用了!" << endl;
	delete pstring;
}
int main()
{
	NoName a;

	NoName* p = new NoName;	//用new创建的对象,动态分配内存,要用delete去删除
	delete p;
	return 0;
}

你可能感兴趣的:(C++,c++)