是默认参数中未定义的变量坏
Is an undefined variable in default argument bad?
在C++中,将一个未定义的变量作为具有默认参数值的函数参数是否不好?
我相信这会导致未定义的行为,但我在一些预先存在的代码中看到了它,我没有看到任何警告被输出,我想确认我应该期待的行为
头文件-Header.h
#ifndef HEADER_H
#define HEADER_H
class aClass
{
int someFunctionA(int aValue = 0);
virtual int someFunctionB(int aValue = 0);
}
#endif
CPP文件-body.CPP
int aClass::someFunctionA(int aValue)
{
if (aValue == 0)
{
return 0;
}
else
{
return 1;
}
}
int aClass::someFunctionB(int aValue)
{
if (aValue == 0)
{
return 0;
}
else
{
return 1;
}
}
int main(int argc, char **argv, char **envp)
{
int uninitializedInt;
int initializedInt = 1;
aClass example = new aClass();
aClass.someFunctionA(); // Expecting this to return 0
aClass.someFunctionB(); // Expecting this to return 0
aClass.someFunctionA(uninitializedInt); // Expecting this to be undefined behaviour
aClass.someFunctionB(uninitializedInt); // Expecting this to be undefined behaviour
aClass.someFunctionA(initializedInt); // Expecting this to return 1
aClass.someFunctionB(initializedInt); // Expecting this to return 1
}
我对代码注释的期望是否正确?
我对代码注释的期望是否正确?
是的
警告并不总是正确的,即错误的警告和丢失的警告是可能的,主要是因为停止问题(至少对于一些警告。是的,这种情况没有那么难,但仍然…)。
相关文章:
- 尝试调用 .h 文件中定义的变量时出现变量未定义错误
- QT C++中对全局变量的未定义引用
- C++ 如何检查 char 变量是否未定义(未初始化)
- 是否未定义将对函数范围变量的引用作为值返回
- 双循环变量的相等条件:未指定还是未定义
- 为什么 mfc 中静态文本工具中的变量未定义
- 未定义的行为错误:对成员变量的更改仅在某些上下文中可见
- 获取作为类变量的 Deque 大小时未定义的行为
- 标头中的成员变量未定义
- 使用静态变量未解析的外部符号/未定义的引用时出错
- 对成员函数和变量的未定义引用
- 从文件行读取未定义数量的变量
- C++类方法包含对静态变量的未定义引用
- C++ - 对"类::变量"的未定义引用
- 未定义的引用指针的变量模板在clang中功能,而不是GCC
- 我的参数化构造函数说我的字符串变量未定义
- 为什么当我通过引用传递数组时,我会收到一个编译器错误,指出我的变量未定义
- 变量未定义错误
- 静态变量-未定义的引用
- 当异常变量未定义时,通过引用捕获