【发布时间】:2016-06-09 20:04:41
【问题描述】:
我试图弄清楚在编写 C++ 代码时应该何时使用 const。这些都是悲观的例子还是这样写代码有好处?:
示例 1:
int findVal(const int OTHER_VAL) const
{
switch(OTHER_VAL)
{
case 1:
return 2;
default:
return 3;
}
}
示例 2:
enum class MobType
{
COW, CHICKEN, DOG, PIG
};
class BaseMob
{
protected:
BaseMob(const MobType TYPE) : TYPE(TYPE) { }
const MobType TYPE;
};
示例 3:
void showWorld(const World &world)
{
auto data = world.getData();
for (auto &i:data)
i.print();
}
【问题讨论】:
-
知道变量永远不会被修改意味着您在尝试理解它周围的代码时需要跟踪的事情更少。
-
“我想弄清楚在编写 C++ 代码时何时应该使用 const”
-
他们中的任何一个会以什么方式成为悲观?
-
有时你假设一个方法不会改变它的类的状态。所以你在方法调用之后继续,就好像什么都没有改变一样。但是,如果该方法有很多嵌套调用,则可能会引入一个错误,其中一个会更改您不希望更改的类变量。将方法声明为
const是一种礼物,因为编译器会告诉您您的假设是否正确。这类错误很难被发现。
标签: c++ optimization parameters micro-optimization pessimistic