我正在尝试打印出值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;,即不是指针。这将自动调用构造函数,并在超出范围时调用析构函数。

10-04 17:51