C++|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++-析构函数】

    推荐阅读