(интервал) ch по сравнению с интервалом (ch): Они - различные синтаксисы для того же самого?

Если во второй раз вы хотите изолировать список comarca_id, попробуйте отправить ваш запрос в потоковом режиме.

    List<Comarca> comarca = debitoNegativacao.stream().map(dn -> dn.getComarca()).distinct().collect(Collectors.toList());

++

6
задан 108 4 November 2008 в 20:33
поделиться

8 ответов

Они - то же самое и также то же как (int)(ch). В C++ это обычно предпочитается для использования именованного броска для разъяснения намерений:

  • Использовать static_cast бросать между типами примитивов различных размеров или signednesses, например. static_cast<char>(anInteger).
  • Использовать dynamic_cast к удрученному базовый класс к производному классу (только полиморфные типы), например. dynamic_cast<Derived *>(aBasePtr).
  • Использовать reinterpret_cast бросать между указателями различных типов или между указателем и целым числом, например. reinterpret_cast<uintptr_t>(somePtr).
  • Использовать const_cast удалить const или volatile спецификаторы от (ОЧЕНЬ ОПАСНЫХ) переменных, например. const_cast<char *>(aConstantPointer).
19
ответ дан 8 December 2019 в 02:24
поделиться

int(x) назван функциональным стилем, брошенным стандартом, и совпадает с броском C-стиля в каждом отношении (для POD) [5.2.3]:

Если список выражений является отдельным выражением, выражение преобразования типов эквивалентно (в definedness, и, если определено в значении) к соответствующему выражению приведения типа (5.4).

10
ответ дан 8 December 2019 в 02:24
поделиться

Они - то же.

3
ответ дан 8 December 2019 в 02:24
поделиться

Konrad Rudolph прав. Но рассмотрите это

  • (интервал) x <-является допустимым синтаксисом в C и C++
  • (интервал*), x <-допустимый синтаксис в C и C++
  • интервал (x) <-допустим в C++, но дает синтаксическую ошибку в C
  • интервал* (x) <-дает синтаксическую ошибку и в C и в C++
3
ответ дан 8 December 2019 в 02:24
поделиться

Хотя эти два синтаксиса имеют то же значение для интервала, второго, синтаксис стиля конструктора является более общим, потому что это может использоваться с другими типами в шаблонах. Таким образом, "T (x)" может быть скомпилирован в преобразование между типами примитивов (например, если T = интервал) или в вызов конструктора (если T является типом класса). Пример на основе моего собственного опыта, где это было полезно, был, когда я переключился от использования собственных типов для промежуточных результатов вычислений к целым числам произвольной точности, которые реализованы как класс.

2
ответ дан 8 December 2019 в 02:24
поделиться

Стоит отметить, что оба стиля кастинга удерживаются от использования в C++, в пользу дольше, более определенные методы броска, перечисленные в ответе Adam Rosenfield.

1
ответ дан 8 December 2019 в 02:24
поделиться

Первым является стиль C, в то время как вторым является стиль C++.

В C++ используйте стиль C++.

1
ответ дан 8 December 2019 в 02:24
поделиться

Если Вы хотите быть суперпротивными, то, если Вы пишете что-то как:

#define int(x) 1

Затем (интервал) x имеет значение, что Вы ожидаете, в то время как интервал (x) будет 1 для любого значения x. Однако, если бы кто-либо когда-нибудь делал это, то необходимо, вероятно, повредить их. Я могу также вполне полагать, что где-нибудь в стандарте Вам запрещают #defining ключевые слова, хотя я не могу найти его прямо сейчас.

За исключением этого, очень глупый, особый случай, затем, как сказано прежде, [5.3.2] говорит, что они - то же для ПЕРЕХОДНЫХ ПРИСТАВОК

-1
ответ дан 8 December 2019 в 02:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: