是否有任何情况下将代码放在括号内以缩小其范围是我可能想要做的事情,或者这是你们会告诉我的那种情况之一,"如果你需要在你的代码中这样做,那么你的代码编写得很糟糕."
例如:
//***CODE****
{
int foo=stuff;
//use foo, and then I'm done using it forever
}
//****MORE CODE****
Run Code Online (Sandbox Code Playgroud) 我正在读取一个文件中的值,我会在读取它时将其存储在内存中.我在这里读到,在C++中处理内存位置的正确方法是始终使用new/delete,但如果我这样做:
DataType* foo = new DataType[sizeof(DataType) * numDataTypes];
Run Code Online (Sandbox Code Playgroud)
然后,这将为每个创建的实例调用默认构造函数,我不希望这样.我打算这样做:
DataType* foo;
char* tempBuffer=new char[sizeof(DataType) * numDataTypes];
foo=(DataType*) tempBuffer;
Run Code Online (Sandbox Code Playgroud)
但我认为这会是某种类型 - 不安全的poo-poo.所以我该怎么做?
在研究这个问题时,我已经看到有些人说阵列很糟糕,矢量很好.我试图更多地使用数组因为我认为我是一个坏男孩通过填充我的程序(我认为是)较慢的向量.我该怎么用???
为什么我必须将以下条件表达式的结果分配给变量才能使其编译?
piece.isWhite() ? whitePieceSquares.add(getSquare(pos)) : blackPieceSquares.add(getSquare(pos));
Run Code Online (Sandbox Code Playgroud)
以上不编译,下面做了:
boolean garbage = piece.isWhite() ? whitePieceSquares.add(getSquare(pos)) : blackPieceSquares.add(getSquare(pos));
Run Code Online (Sandbox Code Playgroud)
List#add()返回一个布尔值,但我会忽略它.只是条件运算符的设计方式是必须分配从函数返回的值,那些返回函数必须具有相同的类型吗?