c++- все статьи тега ➜ страница 25


Наследуются ли статические поля?

когда статические члены наследуются, они статичны для всей иерархии или только для этого класса, т. е.: class SomeClass { public: SomeClass(){total++;} static int total; }; class SomeDerivedClass: public SomeClass { public: SomeDerivedClass(){total++;} }; int main() { SomeClass A; SomeClass B; SomeDerivedClass C; return 0; } всего будет 3 во всех трех случаях, или это будет 2 для SomeClass и 1 SomeDerivedClass? ...

Использование шаблона extern (C++11)

Рис. 1: шаблоны функций TemplHeader.h template<typename T> void f(); TemplCpp.cpp template<typename T> void f(){ //... } //explicit instantation template void f<T>(); Главная.cpp #include "TemplHeader.h" extern template void f<T>(); //is this correct? int main() { f<char>(); return 0; } это правильный способ использовать extern template, или использовать это ключевое слово только для шаблонов классов как на рисунке 2? Рисунок 2: класс шаб ...

Как использовать stringstream для разделения строк, разделенных запятыми [дубликат]

этот вопрос уже есть ответ здесь: Как я могу перебирать слова строки? [закрытый] 74 ответы у меня есть следующий код: std::string str = "abc def,ghi"; std::stringstream ss(str); string token; while (ss >> token) { printf("%sn", token.c_str()); } выход: abc def, ghi Так stringstream::>> оператор может разделять строки пробелом, но не через запятую. Есть ли возможность измени ...

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

В C++11 у нас есть новый синтаксис для инициализации классов, который дает нам большое количество возможностей для инициализации переменных. { // Example 1 int b(1); int a{1}; int c = 1; int d = {1}; } { // Example 2 std::complex<double> b(3,4); std::complex<double> a{3,4}; std::complex<double> c = {3,4}; auto d = std::complex<double>(3,4); auto e = std::complex<double>{3,4}; } { // Example 3 std::string a(3,'x'); std::string b{3,'x'}; // oops ...

Как я должен обнаружить ненужные #include файлы в большом проекте C++?

Я работаю над большим проектом C++ в Visual Studio 2008, и там много файлов с ненужными #include директивы. Иногда #includes - это просто артефакты, и все будет нормально компилироваться с их удалением, а в других случаях классы могут быть объявлены вперед, а #include может быть перемещен в . Есть ли хорошие инструменты для обнаружения обоих этих случаев? ...

Как инициализировать частную статическую карту const в C++?

мне нужен только словарь или ассоциативный массив string=>int. для этого случая есть тип map C++. но мне нужна только одна карта для всех экземпляров (- >static) и эта карта не может быть изменена (- >const); Я нашел этот способ с boost library std::map<int, char> example = boost::assign::map_list_of(1, 'a') (2, 'b') (3, 'c'); есть ли другое решение без этого lib? Я пробовал что-то вроде этого, но всегда есть некоторые проблемы с инициализацией карты. class myClass{ ...

Каков наилучший способ проверить, существует ли файл в C++? (межплатформенный)

Я прочитал ответы для как лучше всего проверить, существует ли файл в C? (кросс-платформенный), но мне интересно, есть ли лучший способ сделать это с помощью стандартных библиотек c++? Желательно вообще не пытаться открыть файл. и stat и access в значительной степени ungoogleable. Что я должен #include чтобы использовать их? ...

Разница между std:: результат и decltype

у меня есть некоторые проблемы с пониманием необходимости std::result_of В C++0х. Если я правильно понял, result_of используется для получения результирующего типа вызова функционального объекта с определенными типами параметров. Например: template <typename F, typename Arg> typename std::result_of<F(Arg)>::type invoke(F f, Arg a) { return f(a); } Я не вижу разницы со следующим кодом: template <typename F, typename Arg> auto invoke(F f, Arg a) -> decltype(f(a)) //use ...

Как создать дерево каталогов в C++ / Linux?

Я хочу простой способ создать несколько каталогов в C++ / Linux. например я хочу сохранить файл Лола.файл в директорию: /tmp/a/b/c но если каталогов нет, я хочу, чтобы они были созданы автоматически. Рабочий пример был бы идеальным. ...

ACE vs Boost vs POCO [закрыто]

Я работаю с Повысить Библиотеки C++ уже довольно давно. Я очень люблю импульс библиотека Asio C++ для сетевого программирования. Однако меня познакомили с двумя другими библиотеками:POCO и Adaptive Communication Environment (ACE) framework. Я хотел бы знать хорошее и плохое каждого из них. ...

Несоответствия обнаруживаются для динамических ресурсов'

Я загрузил и извлек Crypto++ в C:cryptopp. Я использовал Visual Studio Express 2012 для сборки всех проектов внутри (как указано в readme), и все было построено успешно. Затем я сделал тестовый проект в какой-то другой папке и добавил cryptolib в качестве зависимости. После этого я добавил путь включения, чтобы я мог легко включить все заголовки. Когда я попытался скомпилировать, я получил ошибку о неразрешенных символах. чтобы исправить это, я добавил C:cryptoppWin32OutputDebugcryptlib.l ...

Целое число в шестнадцатеричную строку в C++

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

Когда не следует использовать виртуальные деструкторы?

есть ли когда-нибудь веская причина не объявить виртуальный деструктор для класса? Когда вы должны специально избегать его написания? ...

Генерация UML из кода C++? [закрытый]

есть ли инструмент, который может анализировать файлы C++ в рамках проекта и генерировать UML из него? ...

Установка int на бесконечность в C++

у меня есть int a это должно быть равно "бесконечности". Это означает, что если int b = anyValue; a>b всегда истинно. есть ли какая-либо особенность C++, которая могла бы сделать это возможным? ...

Разница между спецификатором c++03 throw() C++11 noexcept

есть ли разница между throw() и noexcept помимо проверки времени выполнения и времени компиляции соответственно ? Википедия C++11 статья предполагает, что спецификаторы броска C++03 устарели. Почему так noexcept достаточно способный, чтобы покрыть все это во время компиляции ? [Примечание: я говорил этот вопрос и в этой статье, но не мог получить твердую причину осуждения.] ...

Что быстрее: if(bool) или if (int)?

какое значение лучше использовать? Логическое значение true или целое число 1? выше тема заставила меня сделать некоторые эксперименты с bool и int на if состояние. Поэтому просто из любопытства я написал эту программу: int f(int i) { if ( i ) return 99; //if(int) else return -99; } int g(bool b) { if ( b ) return 99; //if(bool) else return -99; } int main(){} g++ intbool.cpp -S генерирует ассемблерный код для каждой функции следующим образом: ASM код для f(int) ...

Почему разделение строки медленнее в C++ , чем в Python?

Я пытаюсь преобразовать некоторый код из Python в C++, чтобы получить немного скорости и отточить свои ржавые навыки C++. Вчера я был потрясен, когда наивная реализация чтения строк из stdin была намного быстрее в Python, чем в C++ (см. этой). Сегодня я, наконец, понял, как разделить строку в C++ с помощью слияния разделителей (аналогичная семантика для разделения python ()), и теперь испытываю дежавю! Мой код на C++ занимает гораздо больше времени, чтобы сделать работу (хотя и не на порядок ...

"n " или 'n' или std::endl к std::cout? [дубликат]

этот вопрос уже есть ответ здесь: C++: "std:: endl" vs " n" 11 ответов прошло много лет с тех пор, как я перестал использовать std::endl для завершения строк при записи в std::cout, и начал использовать . но теперь я начинаю видеть больше фрагментов кода, используя 'n' вместо этого, и я начал интересно, что может быть лучше. помимо очевидного, что один является строкой, а другой-символом, есть ли как ...

прервать, завершить или выйти?

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