#include <iostream>
#include <string.h>
using namespace std;
class A
{
private:
int a;
int b;
public:
A():a(10),b(20){};
A(int ad,int bd):a(ad),b(bd){};
void printvalues()
{
cout<<a << " " <<b<<endl;
}
};
int main()
{
A a(5,12);
memset(&a,sizeof(A),0);
a.printvalues();
return 0;
}Mem将对象设置为0,似乎不会对对象产生任何影响。有人能帮我理解这个行为吗?输出:5 12
发布于 2012-02-04 21:44:16
你对memset的观点是错误的。我是memset(addr, value, number)。
注意:在C++中,通常会避免使用memset。
发布于 2012-02-04 21:44:03
你把memset搞错了:
void * memset ( void * ptr, int value, size_t num );它应该是:
memset(&a,0,sizeof(A));在您的示例中,您将a的0字节设置为sizeof(A),因此显然没有变化。
发布于 2012-02-04 22:11:53
memset的正确语法是memset(&a,0,sizeof(A)),因为第一个参数是数组或变量,第二个参数是值,第三个参数是字节数。
有关memset的更多详细信息,请访问http://www.cplusplus.com/reference/clibrary/cstring/memset/。
https://stackoverflow.com/questions/9141300
复制相似问题