Передача по ссылке должна иметь начальное значение? - PullRequest
0 голосов
/ 29 мая 2011

Когда аргумент функции передается по ссылке, должен ли аргумент иметь начальное значение?я написал небольшую функцию, которая принимает uin64_t по ссылке, но она вылетала, когда я uint64_t a; func(VAL, a);\\ VAL is definitely defined

функция просто дает a новое значение, поэтому не должно быть проблем с неопределенными значениями

Ответы [ 4 ]

2 голосов
/ 29 мая 2011

Это зависит от того, что ваша функция делает. Если он пытается прочитать значение в параметре, вы получаете неопределенное поведение. Если вы просто назначите параметр, то все в порядке:

void func(int & var) {
    var = 5; // fine
}

void func(int & var) {
    std::cout << var << std::endl; // not fine
}
1 голос
/ 29 мая 2011

Ничего общего со ссылками - использование унифицированных переменных обычно приводит к неопределенному или, по крайней мере, нежелательному поведению.Тем не менее, что-то вроде этого нормально:

void f( int & x ) {
  x = 42;
}

int main() {
    int a;
    f( a );
}
0 голосов
/ 29 мая 2011

Ответ на ваш вопрос - нет.Причина сбоя вашего приложения, вероятно, в том, что не инициализированВот почему важно всегда инициализировать переменные.

0 голосов
/ 29 мая 2011

Чтение неинициализированных переменных вызывает неопределенное поведение.

...