面试基础题之一:构造函数体中只调用memset将对象的字节内容都置0,有什么安全隐患?

#include <iostream>
using namespace std;
class Base
{
public:
 Base(){ memset(this,0,sizeof(*this)); }
};

 

个人觉得

第一点、如果类中有const数据成员或const引用的话,只有在构造函数的成员初始化列表中初始化 。

第二点、如果类中有虚函数的话,memset会使得虚函数表指针的值置0,则无法索引到虚函数的地址。

第三点、如果类是个虚基类的话,memset会使得虚基类表指针的值置0,则子类无法索引到虚基类部分

 

 

如果大家还有其他的想法,欢迎补充!!!

 

你可能感兴趣的:(面试基础题之一:构造函数体中只调用memset将对象的字节内容都置0,有什么安全隐患?)