在学习侯捷老师析构函数这里遇到这样一个问题
String S1();
String S2("hello");//不用手动调用
的时候,离开作用域, 无需手动去调用对象的析构函数,系统会自动调用~String.
String *p = new String("hello");
delete p;//疑问:为什么这里还需要手动释放?
找到这样一个回答:
其实是两个意思. 前面的析构函数是, 释放成员指针*m_data指向的动态分配的内存new char[]. 而后面这个delete, 是释放new String对象的内存.用完这个对象就要释放这个对象的内存.