首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

为何这个程序里的析构函数还在给成员变量赋值,有什么意义

2013-09-24 
为什么这个程序里的析构函数还在给成员变量赋值,有什么意义?某本书里面的程序:#include stdafx.h#includ

为什么这个程序里的析构函数还在给成员变量赋值,有什么意义?
某本书里面的程序:

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

}
[解决办法]
确实没什么意义
[解决办法]
没什么实际意义。

引用:
某本书里面的程序:

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

}


[解决办法]
清空操作而已,没什么必要的!
[解决办法]
可能是调试用的。
[解决办法]
析构里面赋值没什么实际的意义的。
[解决办法]
如果是静态成员变量 那么还有意义 

只是一般的成员 
那写了白写的垃圾代码 没意义
[解决办法]
如果这里保存的是密码等敏感信息,在离开的时候,我会清零的。
这样在返回的时候,不会再堆和栈上留下不应该的数据。

热点排行