Вопросы с тегом «c++»

151
Зачем использовать префиксы для переменных-членов в классах C ++

Большая часть кода C ++ использует синтаксические соглашения для разметки переменных-членов. Общие примеры включают m_ memberName для открытых участников (где публичные члены используются вообще) _ memberName для частных пользователей или всех участников Другие пытаются принудительно использовать...

151
C ++ эквивалент ToString Java?

Я хотел бы контролировать то, что записывается в поток, т. Е. coutДля объекта пользовательского класса. Это возможно в C ++? В Java вы можете переопределить toString()метод для аналогичной...

151
Объявление перечисления в классе

В следующем фрагменте кода Colorперечисление объявляется внутри Carкласса, чтобы ограничить область действия перечисления и попытаться не «загрязнять» глобальное пространство имен. class Car { public: enum Color { RED, BLUE, WHITE }; void SetColor( Car::Color color ) { _color = color; } Car::Color...

151
Финал Java против C ++ const

В учебнике по программированию на Java для C ++ говорится, что (выделение - мое): Ключевое слово final примерно эквивалентно const в C ++ Что значит «грубо» в этом контексте? Разве они точно так же? Каковы различия, если таковые...

151
Объявление друга в C ++ - разница между публичным и частным

Есть ли разница между объявлением функции / класса друга как частной или публичной? Я не могу найти ничего об этом в Интернете. Я имею в виду разницу между: class A { public: friend class B; }; а также class A { private: //or nothing as the default is private friend class B; }; Есть разница?...

151
Выбор между vector :: resize () и vector :: reserve ()

Я предварительно выделяю память для моей vectorпеременной-члена. Ниже код минимальная часть class A { vector<string> t_Names; public: A () : t_Names(1000) {} }; Теперь в какой-то момент времени, если t_Names.size()равен 1000. Я намерен увеличить размер на 100. Затем, если оно достигнет 1100,...

151
Ключевое слово C ++ auto. Почему это волшебство?

Из всего материала, который я использовал для изучения C ++, autoвсегда был странный спецификатор продолжительности хранения, который не служил никакой цели. Но совсем недавно я столкнулся с кодом, который использовал его как имя типа само по себе. Я из любопытства попробовал, и он предполагает...

151
В CMake, как я могу проверить, является ли компилятор Clang?

У нас есть набор межплатформенных сценариев сборки CMake , и мы поддерживаем сборку с помощью Visual C ++ и GCC . Мы пробуем Clang , но я не могу понять, как проверить, является ли компилятор Clang с нашим сценарием CMake. Что я должен проверить, чтобы увидеть, является ли компилятор Clang или нет?...

151
Аргументы шаблона по умолчанию

Если мне разрешено делать следующее: template <typename T = int> class Foo{ }; Почему мне не разрешено делать следующее в основном? Foo me; Но я должен указать следующее: Foo<int> me; C ++ 11 представил аргументы шаблона по умолчанию, и сейчас они не совсем...

151
Каковы некоторые виды использования decltype (auto)?

На этот вопрос есть ответы на Stack Overflow на русском : Конструкция decltype (авто) В c ++ 14 decltype(auto)введена идиома. Обычно его используют для того, чтобы autoобъявления могли использовать decltypeправила для данного выражения . В поисках примеров «хорошего» использования идиомы я могу...

150
Какие компиляторы C ++, если таковые имеются, выполняют оптимизацию хвостовой рекурсии?

Мне кажется, что было бы идеально работать для оптимизации хвостовой рекурсии как в C, так и в C ++, но при отладке я никогда не вижу стека фреймов, который указывает на эту оптимизацию. Это хорошо, потому что стек говорит мне, насколько глубока рекурсия. Тем не менее, оптимизация тоже была бы...

150
Как объединить несколько строк C ++ в одну строку?

C # имеет функцию синтаксиса, где вы можете объединить много типов данных в одну строку. string s = new String(); s += "Hello world, " + myInt + niceToSeeYouString; s += someChar1 + interestingDecimal + someChar2; Что было бы эквивалентно в C ++? Насколько я вижу, вам придется делать все это в...

150
Какой смысл g ++ -Worder?

Опция g ++ -Wall включает в себя -Wreorder. Что эта опция делает, описано ниже. Для меня не очевидно, почему кого-то это волнует (особенно достаточно, чтобы включить это по умолчанию в -Wall). -Заказ (только C ++) Предупреждать, когда порядок инициализаторов членов, указанный в коде, не...

150
Является ли хорошей практикой обнулять указатель после его удаления?

Я начну с того, что использую умные указатели, и вам никогда не придется об этом беспокоиться. Какие проблемы со следующим кодом? Foo * p = new Foo; // (use p) delete p; p = NULL; Это было вызвано ответом и комментариями к другому вопросу. Один комментарий от Нила Баттерворта вызвал несколько...

149
Почему массивы ссылок незаконны?

Следующий код не компилируется. int a = 1, b = 2, c = 3; int& arr[] = {a,b,c,8}; Что стандарт C ++ говорит об этом? Я знаю, что мог бы объявить класс, который содержит ссылку, а затем создать массив этого класса, как показано ниже. Но я действительно хочу знать, почему приведенный выше код не...

149
C ++ семантика `статическое const` против` const`

В частности, в C ++, каковы семантические различия, например: static const int x = 0 ; и const int x = 0 ; для обоих в staticкачестве связи и классом хранения спецификатора (т.е. внутри и снаружи...

149
Преобразовать программу Python в код C / C ++? [закрыто]

Закрыто . Этот вопрос должен быть более сфокусированным . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он был сосредоточен только на одной проблеме, отредактировав этот пост . Закрыто 3 года назад . Улучшить этот вопрос Можно ли конвертировать...

149
Какой смысл в константных указателях?

Я не говорю об указателях на константные значения, а о самих константных указателях. Я изучаю C и C ++ за пределами самых базовых вещей, и до сегодняшнего дня я понял, что указатели передаются по значению функциям, что имеет смысл. Это означает, что внутри функции я могу заставить скопированный...

149
Как работает `void_t`

Я смотрел выступление Уолтера Брауна на Cppcon14 о современном программировании шаблонов ( часть I , часть II ), где он представил свою void_tтехнику SFINAE. Пример: дан простой шаблон переменной, который оценивает, правильно voidли сформированы все аргументы шаблона: template< class ... >...