Когда я вызываю функцию с одним аргументом типа bool с пустыми скобками, какое значение имеет параметр bool? - PullRequest
0 голосов
/ 26 февраля 2020

Мне просто интересно, каково значение параметра bool функции-члена, когда функция вызывается без передачи значения?
Это неверно? Почему это ложно?

bool CSVread::Reset( bool partial_reset /* = false */ )  

, тогда сброс называется как

obj.reset()

Не передается аргумент, так что же является значением part_reset и почему? В Visual Studio это ложь, но почему?

Я не могу найти какое-либо определение значения bool как ложного для аргумента функции?
Разве аргумент функции не является частью области действия функции, поэтому он должен быть автоматическим? c хранилище и, следовательно, его значение по умолчанию не определено?

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

По умолчанию он не инициализируется, поэтому может иметь значение true или false в зависимости от значений tra sh в памяти.

См. Этот ответ для получения дополнительной информации: Почему C ++ bool var true по умолчанию?

Кстати, не рекомендуется использовать функцию, которая принимает аргументы без их указания или значения по умолчанию. Это должно привести к ошибке компиляции, если у вас нет отложенных параметров компилятора

0 голосов
/ 26 февраля 2020

По умолчанию каждый логический параметр имеет значение false, если вы не измените его на другое значение.

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/default-values

...