0

这可能只是我对 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;
}
4

2 回答 2

1
int * someInt2;
*someInt2=bFunc();

未定义的行为。你没有someInt2指出任何有意义的地方。

编辑:“似乎正常运行”是“未定义的行为”可能的事情之一。

于 2012-08-18T16:47:14.750 回答
1
 int * someInt2;

是一个未初始化的指针,但您正在尝试为其指向的内容分配一个值。您需要分配一些内存或简单地使用int变量来存储函数的返回值。

于 2012-08-18T16:49:36.180 回答