Значение конструктора по умолчанию для типа bool - PullRequest
15 голосов
/ 22 июля 2010

Какое значение возвращает конструктор по умолчанию типа bool в C ++?

Например, писать

int i = int();

гарантирует, что переменная i будет всегда инициироваться с 0.

Полагаю, такая процедура инициализации также возможна:

bool b = bool();

Но, к сожалению, я нигде не смог найти, какое значение такой конструктор по умолчанию определил для возврата. Всегда ли переменная b инициализируется с помощью false или true .

Ответы [ 5 ]

32 голосов
/ 22 июля 2010

false.

Рассмотрено в проекте C ++ 14 N4296, раздел 8.5 (Инициализаторы), параграф 6, пункт списка 1 и ссылки в нем, и параграф 8, пункт списка 4.

6 голосов
/ 22 июля 2010

bool является целочисленным типом, и инициализация значения должна обнулять его.

3 голосов
/ 22 июля 2010

Всегда ли переменная b инициализируется значением false или true?

ложь

Преобразование true в тип integer даст 1, а преобразование false даст 0 (4.5/4 и 4.7/4)

Очень простой тестовый код

#include<iostream>
int main()
{
  bool b=bool();

  if(!b)
  {
     std::cout<<"b: false";
  }

}
1 голос
/ 22 июля 2010

bool ведет себя так, как если бы он был объявлен:

enum bool {false,true};

Это целочисленный тип, который может быть преобразован в int как значения 0 и 1 (соответственно), и его значение по умолчанию равно false.

1 голос
/ 22 июля 2010

b инициализируется также с нуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...