有时在C或C++中,我们可能有一个变量可能是const,但我们必须花费一些代码行来初始化它。
是否有一种方法告诉编译器,在函数的某个点之后,一些已经构造的变量必须被视为const,直到其作用域结束?
类似于:
我知道我可以在专门的函数中初始化变量。但这并不是我要问的。
另一个例子:
是否有一种方法告诉编译器,在函数的某个点之后,一些已经构造的变量必须被视为const,直到其作用域结束?
类似于:
可能重复:
有没有什么忍者技巧可以使变量在声明后成为常量?
像这样的东西:
int c = 0;
// the value of c is initialized here
switch(someVar) {
case foo: c = 3; break;
case bar: c = 4; break;
default : c = 42; // what else?
}
// now c is constant
ASSUME_CONST_FROM_NOW(c) // some #pragma maybe?
我知道我可以在专门的函数中初始化变量。但这并不是我要问的。
另一个例子:
int c = 0; int d = 0;
{ /*some block of code that initializes both c and d jointly*/ }
ASSUME_CONST_FROM_NOW(c, d)
没有函数可以在不创建结构体或类的情况下同时返回两个值。
但是这种技巧可能会有用,以便使旧的、糟糕的代码更容易理解,而不需要进行太多的重构。