为什么这个程序里的析构函数还在给成员变量赋值,有什么意义?
某本书里面的程序:
#include "stdafx.h"
#include <string.h>
class CBook//定义一个CBook类
{
public:
char m_BookName[128];//定义数据成员m_BookName
const unsigned int m_Price;//定义数据成员m_Price
int m_ChapterNum;//定义数据成员m_Chapter
CBook()//定义默认构造函数
:m_Price(32),m_ChapterNum(15)//初始化数据成员
{
strcpy(m_BookName,"大学英语");
printf("构造函数被调用\n");//输出信息
}
CBook(const CBook &book)//定义复制构造函数
:m_Price(book.m_Price)//初始化数据成员
{
m_ChapterNum = book.m_ChapterNum;//复制m_ChaperNum成员数据
strcpy(m_BookName,book.m_BookName);//复制m_BookName成员数据
printf("复制构造函数被调用\n");//输出信息
}
~CBook()//定义一个析构函数
{
m_ChapterNum = 0;//设置成员变量
memset(m_BookName,0,128);//设置成员变量的存储空间数据为0
printf("析构函数被调用\n");//输出析构函数调用信息
}
};
int main(int argc, char* argv[])
{
CBook book;//定义一个CBook类对象
printf("定义一个CBook类对象\n");//输出信息
return 0;
}
[解决办法]
确实没什么意义
[解决办法]
没什么实际意义。
[解决办法]
清空操作而已,没什么必要的!
[解决办法]
可能是调试用的。
[解决办法]
析构里面赋值没什么实际的意义的。
[解决办法]
如果是静态成员变量 那么还有意义
只是一般的成员
那写了白写的垃圾代码 没意义
[解决办法]
如果这里保存的是密码等敏感信息,在离开的时候,我会清零的。
这样在返回的时候,不会再堆和栈上留下不应该的数据。