这可能只是我对c ++不了解的东西,但为什么这段代码会给我一个运行时错误?如果我没有初始化someInt2或者我没有指定aClass有一个int成员,我没有得到错误。
using namespace std;
class aClass
{
int someint;
public:
aClass()
{
someint=4;
}
};
int bFunc()
{
return 4;
}
aClass aFunc()
{
aClass class1=aClass();
return class1;
}
int main()
{
int * someInt2;
*someInt2=bFunc();
aClass * thisClass;
cout << "Got here" << endl;
*thisClass=aFunc();
cout << "Not here" << endl;
return 0;
}
答案 0 :(得分:1)
int * someInt2;
*someInt2=bFunc();
未定义的行为。你没有让someInt2
点有意义。
编辑:“看似正常运行”是“未定义行为”可能出现的可能事情之一。
答案 1 :(得分:1)
int * someInt2;
是一个未初始化的指针,但您正在尝试为其指向的值分配值。您需要分配一些内存或只使用int
变量来存储函数的返回值。