Пожалуйста, прочитайте вопрос полностью, прежде чем пометить его как дубликат. Заявление вроде
int i=int();
большинство программистов скажут, что здесь есть инициализация значения, и i
будет инициализировано значением. (0 на выходе). Но он также выводит 0 в качестве вывода компилятора С++ 98. Следующая программа, которую я тестировал на реализации С++ 98, дает мне 0 в качестве вывода.
#include <iostream>
int main()
{
int i=int();
std::cout<<i;
}
Не говорите, что значение i инициализировано в приведенной выше программе C++98, потому что инициализация значения введена в C++03. Итак, как я инициализировался здесь? Это действительно вызов конструктора? int() выглядит как вызов конструктора. Примитивные типы также имеют конструкторы по умолчанию в C++, как сказал Бьярн Страуструп в своей книге «Язык программирования C++ и TC++PL».
Язык программирования C++ Бьярн Страуструп:
10.4.2 Встроенные типы также имеют конструкторы по умолчанию
также прочитайте раздел 6.2.8 той же книги.
В следующих ссылках также говорится, что встроенные типы имеют конструкторы по умолчанию в C++.
1) http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=15
2) http://www.geeksforgeeks.org/c-default-constructor-built-in-types/
Так могу ли я действительно сказать, что это вызов конструктора целочисленного типа?