C++ и java работают по-разному, когда дело доходит до типов. Хотя java (насколько мне известно) использует базовые встроенные типы и ссылочные типы, C++ использует систему другого типа.
C++ встроенные типы включают в себя фундаментальные типы (bool, типы символов, такие как char, целочисленные типы, типы с плавающей запятой и void), а также некоторые другие типы, такие как ссылочные типы, такие как double&
или std::vector<std::sting>&&
и типы указателей.
В дополнение к этим, C++ поддерживает определенные пользователем типы (структуры, классы, enum и enum class). стандартная библиотека предоставляет множество пользовательских типов, таких как std :: string.
Означает, что int a(5);
нотация НЕ зарезервирована только для определенных пользователем типов. Язык поддерживает инициализацию значений таким образом.в C++ 11 является также юридическим сказать int a{5};
теперь о присвоении значения:
int a; //declaration
a=5; //assignment
int b(5); //declaration+initialization
int c=5; //declaration+initialization (NO assignment)
Если переменная не была объявлена, нет никакого присваивания, компилятор анализирует int c=5;
так же, как int c(5);
Ну, это отличает '5' от' int'. Что ничего не делает. – BoBTFish
'int (5)' - [выражение для выражения функции] (http://en.cppreference.com/w/cpp/language/explicit_cast). Это не является специфическим для инициализации и может фактически появляться в любом месте, где допускается выражение. –
@BoBTFish: Нет, литье - это идентификатор типа данных в круглых скобках, за которым следует выражение. –