为什么类的对象不可以用memset初始化,而结构体可以?
发布网友
发布时间:2024-08-19 07:28
我来回答
共5个回答
热心网友
时间:2024-08-22 15:40
因为类的实例中还隐含了一个成员函数指针
热心网友
时间:2024-08-22 15:31
这个问题挺复杂,5分可能不够啊
热心网友
时间:2024-08-22 15:38
楼上说的
memset使成员函数指针置空
热心网友
时间:2024-08-22 15:39
我想除了含vptr的以外都可以用memset初始
热心网友
时间:2024-08-22 15:34
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
class A
{
public:
int num;
};
int main()
{
A a[2];
a[0].num = 1;
printf("%d\n", a[0].num);
memset(a, 0, sizeof a);
printf("%d\n", a[0].num);
system("pause");
return 0;
}
void *memset(void *s, char ch, unsigned n);
第一个参数是void *。如果你只对一个对象memset那是不行的,比如
memset(a[0], 0, sizeof (a[0]));
除非这样写
memset(&a[0], 0, sizeof (a[0]));