我正在尝试打印出值123456,但是它给了我垃圾值。我该如何解决?并且您能解释一下为什么它给出错误的值吗?
#include <stdio.h>
#include <stdlib.h>
struct MyInfo
{
private:
int private_key = 123456;
public:
int setkey(int value)
{
private_key = value;
}
int GetScore()
{
return private_key;
}
};
void main()
{
MyInfo* pMyInfo;
pMyInfo = (MyInfo*)malloc(sizeof(MyInfo));
printf("%d\n", pMyInfo->GetScore());
free(pMyInfo);
}
最佳答案
不要使用malloc
/ free
,而是使用pMyInfo = new MyInfo()
和delete pMyInfo
。只有new
会调用构造函数来初始化该值;只有delete
会调用析构函数。
关于注释,意思是,您也可以将其放在堆栈中,即MyInfo pMyInfo;
,即不是指针。这将自动调用构造函数,并在超出范围时调用析构函数。