当函数的参数通过引用传递时,参数是否必须具有初始值?我写了一个小函数,通过引用接受uin64_t,但是当我做uint64_t a; func(VAL, a);\\ VAL is definitely defined
该函数只是给a
一个新值,所以未定义的值不应该有任何问题
答案 0 :(得分:2)
这取决于你的功能。如果它尝试读取参数中的值,则会得到未定义的行为。如果你只是分配给参数,你很好:
void func(int & var) {
var = 5; // fine
}
void func(int & var) {
std::cout << var << std::endl; // not fine
}
答案 1 :(得分:1)
与引用无关 - 使用单元化变量通常会导致未定义或至少不需要的行为。但是,这样的事情还可以:
void f( int & x ) {
x = 42;
}
int main() {
int a;
f( a );
}
答案 2 :(得分:0)
读取未初始化的变量会调用未定义的行为。
答案 3 :(得分:0)
你的问题的答案是否定的。应用程序崩溃的原因可能是因为a未初始化。这就是为什么始终初始化变量很重要。