如果一个类在执行完成后执行边界检查

the*_*man 1 c++ language-agnostic

这可能是一个相当主观的问题,但在这里与我无关.

假设我有一个三角形类,定义类似的东西

class Triangle{
vertex3D vertexs[3];
public:
vertex* GetVertex(int vertexNumber);
}
Run Code Online (Sandbox Code Playgroud)

现在对于大多数正常的应用程序来说,在尝试返回顶点指针之前GetVertex应该确保它vertexNumber是一个有效的索引.我会说通常它可以返回NULL,如果vertexNumber无效,但这不是我真正要问的.

在游戏情况下,检查是否vertexNumber一直有效可能会花费相当多的时间,GetVertex假设只传递有效值会更快.

因此,以轻微的性能提升为基础,三角形基本上可以接受谨慎的风吗?

编辑

好的...所以,如果我在调试中进行边界检查而不是发布...我如何自动执行此操作以便我不必编辑代码...某种编译时间开关或某些东西?会使用#ifdef debug某种东西吗?哪里可以找到更多相关信息?

Jam*_*lis 5

你一定要检查调试版本中的边界.

如果您确定您的代码是正确的(因此,您已经进行了代码审查并且您已经对其进行了广泛的测试),那么为了提高性能,可以在发布版本中省略边界检查.

如果要在调试版本中测试边界而不在发布版本中测试边界,那么您应该在调试版本中使用断言.断言应该用于验证始终为真的事物.如果您没有检查函数内部的边界并且您的代码是正确的,那么该值应该永远不会超出范围.