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

C ++ - это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде (который будет скомпилирован с помощью компилятора C ++). Используйте тег, зависящий от версии, для вопросов, связанных с конкретной редакцией стандарта [C ++ 11], [C ++ 14], [C ++ 17] или [C ++ 20] и т. Д.

10
Замена 32-разрядного счетчика циклов на 64-разрядный вводит сумасшедшие отклонения производительности с _mm_popcnt_u64 на процессорах Intel
Я искал самый быстрый способ для popcountбольших массивов данных. Я обнаружил очень странное действие: Изменение переменного цикла из unsignedк uint64_tвысказанному падению производительности на 50% по сравнению с ПК. Бенчмарк #include <iostream> #include <chrono> #include <x86intrin.h> int main(int argc, char* argv[]) { using namespace std; if (argc != 2) { cerr …

11
Что такое rvalues, lvalues, xvalues, glvalues ​​и prvalues?
В C ++ 03 выражение является либо значением r, либо значением l . В C ++ 11 выражение может быть: Rvalue именующий xvalue glvalue prvalue Две категории стали пятью категориями. Каковы эти новые категории выражений? Как эти новые категории связаны с существующими категориями rvalue и lvalue? Являются ли категории rvalue …
1357 c++  expression  c++-faq  c++11 

18
В чем разница между const int *, const int * const и int const *?
Я всегда беспорядок , как использовать const int*, const int * constи int const *правильно. Существует ли набор правил, определяющих, что вы можете и не можете делать? Я хочу знать все, что можно и чего нельзя делать с точки зрения назначений, передачи функций и т. Д.
1357 c++  c  pointers  int  const 

25
Зачем нам нужны виртуальные функции в C ++?
Я изучаю C ++, и я только вхожу в виртуальные функции. Из того, что я прочитал (в книге и онлайн), виртуальные функции - это функции в базовом классе, которые вы можете переопределить в производных классах. Но ранее в книге, изучая базовое наследование, я смог переопределить базовые функции в производных классах …

6
Где и почему я должен поставить ключевые слова «template» и «typename»?
В шаблонах, где и почему я должен поставить typenameи templateна зависимых именах? Что именно являются зависимыми именами в любом случае? У меня есть следующий код: template <typename T, typename Tail> // Tail will be a UnionNode too. struct UnionNode : public Tail { // ... template<typename U> struct inUnion { …

20
Можно ли получить доступ к памяти локальной переменной вне ее области?
У меня есть следующий код. #include <iostream> int * foo() { int a = 5; return &a; } int main() { int* p = foo(); std::cout << *p; *p = 8; std::cout << *p; } И код просто выполняется без исключений времени выполнения! Выход был 58 Как это может быть? …


1
Каковы новые функции в C ++ 17?
Locked . Этот вопрос и его ответы заблокированы, потому что вопрос не по теме, но имеет историческое значение. В настоящее время он не принимает новые ответы или взаимодействия. C ++ 17 теперь полностью готов, поэтому вряд ли он претерпит большие изменения. Сотни предложений были выдвинуты для C ++ 17. Какие …
1007 c++  standards  c++-faq  c++17 

5
Неопределенные точки поведения и последовательности
Что такое «точки последовательности»? Какова связь между неопределенным поведением и точками последовательности? Я часто использую смешные и запутанные выражения, например a[++i] = i;, чтобы чувствовать себя лучше. Почему я должен прекратить использовать их? Если вы прочитали это, обязательно посетите следующий вопрос. Неопределенное поведение и точки последовательности перезагружены . (Примечание. Предполагается, …



23
Почему переменные не могут быть объявлены в операторе switch?
Я всегда задавался вопросом: почему вы не можете объявлять переменные после метки регистра в операторе switch? В C ++ вы можете объявлять переменные практически везде (и объявление их близко к первому использованию, очевидно, хорошо), но следующее по-прежнему не будет работать: switch (val) { case VAL: // This won't work int …

5
Каковы правила использования подчеркивания в идентификаторе C ++?
В C ++ принято называть переменные-члены с каким-то префиксом, обозначающим тот факт, что они являются переменными-членами, а не локальными переменными или параметрами. Если вы пришли из MFC, вы, вероятно, будете использовать m_foo. Я тоже видел myFooиногда. C # (или, возможно, просто .NET), кажется, рекомендует использовать только подчеркивание, как в _foo. …

7
В чем разница между typedef и using в C ++ 11?
Я знаю, что в C ++ 11 теперь мы можем использовать usingдля записи псевдоним типа, например, typedefs: typedef int MyInt; Насколько я понимаю, эквивалентно: using MyInt = int; И этот новый синтаксис возник в результате попытки выразить " template typedef": template< class T > using MyType = AnotherType< T, MyAllocatorType …


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.