如果'Test'是一个普通的类,那么之间有什么区别:
Test* test = new Test;
Run Code Online (Sandbox Code Playgroud)
和
Test* test = new Test();
Run Code Online (Sandbox Code Playgroud) 在我正在阅读的书中(Herbert Schildt的C++ Complete Reference),它表示没有使用分配的数组new可以有一个初始化器.
我不能使用new?初始化动态分配的数组?如果不是什么原因呢?
我在C++方面很不错,但我可能错过了一些适用于此的细微差别.或许我完全错过了一个巨大的概念,我不知道.我的程序立即崩溃("blah.exe没有响应")约1/5次运行(其他时候它运行完全正常)并且我将问题跟踪到一个构造函数,用于在主要功能的开头.以下是导致问题的代码(在构造函数中):
int ii;
for(ii=0;ii<=255;ii++)
{
cout<<"ent "<<ii<<endl;
entity_list[ii]=NULL;
}
for(ii=0;ii<=255;ii++)
{
cout<<"sec "<<ii<<endl;
sector_list[ii]=NULL;
}
entity_list[0] = new Entity(0,0);
entity_list[0]->_world = this;
Run Code Online (Sandbox Code Playgroud)
特别是第二个for循环.cout引用是新的,以便告诉它有麻烦的地方.它会将整个"ent 1"打印到"ent 255",然后将"sec 1"打印到"sec 255",然后立即崩溃,好像它是第二次for循环的第257次运行.我设置第二个for循环直到"ii <= 254",这停止了所有崩溃.C++代码是否倾向于"过冲"循环或什么?是什么导致它在这个特定的循环中崩溃似乎是随机的?
顺便说一句,entity_list和sector_list分别指向名为Entity和Sector的类,但它们没有构造任何东西,所以我认为它不相关.我还在头文件中有一个Entity类的前向声明,但由于没有构造,我认为它也不相关.