这是一个非常基本的问题; 对不起,如果它很常见,但我找不到具体的答案.
通常我发现自己处于一个对象固有的常量,但需要多行初始化的情况.例如,我想要一个步幅是向量中未知的编译时元素数量的乘积:
const std::vector<int> extentsVector; //pretend this is initialized
int stride = 1;
for (int i=0; i<k; ++i){
stride *= extentsVector[i];
}
Run Code Online (Sandbox Code Playgroud)
无论如何,你明白了.我再也不想接触'stride'所以它应该是const.处理这个问题的首选方法是什么?我是否使用临时值来计算值,然后将其分配给"const"对象?或者是更好的常量?或者我只是把它留给非const?
使用初始化函数:
int ComputeStride() {
int s = 1;
for (auto e: extentsvector)
s *= e;
return s;
}
const int stride = ComputeStride();
Run Code Online (Sandbox Code Playgroud)