Стандарт C ++: по умолчанию «const T & value» в конструкторе вектора для типа «int» - PullRequest
5 голосов
/ 10 августа 2011
explicit vector ( size_type n, const T& value= T(), const Allocator& = Allocator() );

vector<int> vec(10);
cout << "vec.size: " << vec.size() << endl;
for (vector<int>::const_iterator iter=vec.begin(); iter != vec.end(); ++iter)
{
    cout << *iter << endl;
}

Выход из VS2010:

vec.size: 10
0
0
0
0
0
0
0
0
0
0

Вопрос>: Основываясь на последнем стандарте C ++, каково значение int по умолчанию, когда мы определяем объект вектора с помощью vectorObject (size_type)?

Здесь, как вы можете видеть, VS2010 выводит 0 в качестве значения int по умолчанию. Но я не знаю, требуется ли это по стандарту C ++.

1 Ответ

13 голосов
/ 10 августа 2011

Да, это обязательное поведение. T() для любого числового типа T дает 0 (конечно, типа T).

Это называется значение инициализации , что для числовых типов такое же, как нулевая инициализация .

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