Tag: const

В чем разница между макросом и константой в C ++?

Мне задали этот вопрос в техническом интервью: В чем разница между const и макросом в C ++? Мой ответ заключался в том, что макрос представляет собой препроцессорную директиву, и может быть сложно отладить приложение, если вы используете макрос, поскольку он заменяется константным выражением перед компиляцией, тогда как константа может иметь идентификатор типа и легко отлаживается. […]

когда использовать const и const ссылку в функции args

При написании функции C ++, в которой есть аргументы, которые передаются ей, из моего понимания const всегда следует использовать, если вы можете гарантировать, что объект не будет изменен или указатель const, если указатель не будет изменен. Когда еще эта практика рекомендуется? Когда вы будете использовать константную ссылку и какие преимущества перед ее прохождением через указатель? […]

Каковы используются константные указатели (в отличие от указателей на объекты const)?

Я часто использовал указатели на объекты const, например … const int *p; Это просто означает, что вы не можете изменить целое число, которое p указывает на p . Но я также видел ссылку на константные указатели, объявленные вот так … int* const p; Как я понимаю, это означает, что переменная указателя сама по себе постоянна […]

В чем разница между const_iterator и non-const iterator в C ++ STL?

В чем разница между const_iterator и iterator и где вы будете использовать один над другим?

Переменная Const изменена с помощью указателя в C

Переменная i объявлена ​​как const, но все же я могу изменить значение с указателем на ячейку памяти. Как это возможно? int main() { const int i = 11; int *ip = &i; *ip=100; printf(“%d\n”,*ip); printf(“%d\n”,i); } Когда я компилирую, я получаю это предупреждение: test.c: In function ‘main’: test.c:11: warning: initialization discards qualifiers from pointer target […]

Такая же функция с const и без – когда и почему?

T& f() { // some code … } const T& f() const { // some code … } Я видел это пару раз (во вступительной книге, которую я изучал до сих пор). Я знаю, что первый const делает возвращаемое значение const, другими словами: unmodifiable. Полагаю, что вторая константа позволяет вызвать функцию для константных объявленных переменных. […]

C – Доступ к объявлению const без константы

Является ли доступ к не- const объекту через объявление const разрешенное стандартом C? Например, следующий код гарантирован для компиляции и вывода 23 и 42 на стандартно-совместимой платформе? единица перевода A: int a = 23; void foo(void) { a = 42; } единица перевода B: #include extern volatile const int a; void foo(void); int main(void) { […]

Путаница относительно модификации константной переменной с помощью указателей

Следующий пример добавил путаницу в моем понимании. Я не могу понять, как можно изменить переменную const local. Пожалуйста, помогите мне понять то же самое. /* Compile code without optimization option */ // volatile.c #include int main(void) { const int local = 10; int *ptr = (int*) &local; printf(“Initial value of local : %d \n”, local); […]

Как его срок службы возвращаемого значения распространяется на область действия вызывающей функции, когда она привязана к константной ссылке в вызывающей функции?

«Если вы вернете значение (а не ссылку) из функции, затем привяжите его к константной ссылке в вызывающей функции, ее время жизни будет расширено до объема вызывающей функции». Итак: CASE A const BoundingBox Player::GetBoundingBox(void) { return BoundingBox( &GetBoundingSphere() ); } Возвращает значение типа const BoundingBox из функции GetBoundingBox() вариант I: (привязать его к константной ссылке) const […]

Cast vector в вектор

У меня есть переменная-член типа vector (где T – это пользовательский class, но он также может быть int.) У меня есть функция, из которой я хочу вернуть указатель на этот вектор, но я не хотите, чтобы вызывающий мог изменить вектор или его элементы. Поэтому я хочу, чтобы возвращаемый тип был const vector* Ни один из […]

Давайте будем гением компьютера.