c++故意重新定义变量
C++ redefine a variable on purpose
我想知道在c++中重新定义变量是否可能,例如:
void some_function(int some_argument) {
float some_argument=(float) some_argument;
// Do stuff
return some_argument;
}
有办法做到这一点吗?我知道你可以改名字,但如果名字不变的话会更简洁。如果没有,是不是有什么原因没有包含这个功能?
有办法做到这一点吗?
你可以创建一个新的作用域,并定义一个同名的新变量,该变量遮蔽了函数参数的名称。
void some_function(int some_argument) {
{
float some_argument = 0;
// Do stuff
}
}
但是,不能使用:
void some_function(int some_argument) {
{
float some_argument = (float)some_argument;
// Do stuff
}
}
在第二种情况下,初始化不使用函数参数来初始化隐藏变量。它和
一样糟糕int i = i;
避免所有这些麻烦:
为变量和参数使用不同的名称
void some_function(int some_argument_in) { float some_argument = (float)some_argument_in; // Do stuff }
使用函数重载。
void some_function(float some_argument) { // Do stuff } void some_function(int some_argument) { some_function((float)some_argument); }
下面给出了在int
和float
之间转换时可能丢失数据的警告,但它演示了如何将变量作为一种类型传递,并将其作为另一种类型在函数中使用:
float some_function(int some_argument) {
// Do stuff
return some_argument;
}
int main()
{
float oldval = 3;
float newval = some_function(oldval);
return 0;
}
相关文章:
- 在头文件中定义变量不会出错
- 如何使用 SFINAE 在方法调用中有条件地定义变量?
- 在命名空间中定义变量
- 是否可以在C++中基于程序集输出(.dll或.exe)定义变量
- 用不同类型重新定义变量
- 具有全局定义变量的递归比没有全局定义变量的递归函数获得更多的堆栈.为什么?(跳入C++)
- 定义变量类型
- 在命名空间中定义变量,但在测试中获取空值
- cmake没有定义变量
- C 中的继承:在亲子类中定义变量
- 在同一函数中定义变量及其静态等效项
- 如何在 Tensorflow C++ 中定义变量的自定义有状态 Op 保存值
- 如何将 int 和 int* 传递到函数中以定义变量
- 在定义变量时调用类函数
- 定义变量与模板
- 定义变量类型
- 为什么您可以在 switch 语句中的"默认"下定义变量,而不能在"case"下定义变量
- C 如何基于另一个变量和某些算术定义变量的值
- C 可以指向具有定义变量的函数
- C 定义变量设置值