c++- все статьи тега ➜ страница 13
Когда следует использовать статическое литье, динамическое литье, const cast и reinterpret cast?
как правильно использовать: static_cast dynamic_cast const_cast reinterpret_cast C-style cast (type)value функция-стиль cast type(value) как решить, что использовать, в каких конкретных случаях? ...
Что такое правило трех?
что значит копирование объекта В смысле? что такое конструктор копирования и оператор присваивания копии? когда я должен объявить их сам? Как я могу предотвратить копирование моих объектов? ...
Регулярное приведение против статического приведения против динамического приведения [дубликат]
этот вопрос уже есть ответ здесь: когда следует использовать static_cast, dynamic_cast, const_cast и reinterpret_cast? 7 ответов Я пишу код на C и C++ уже почти двадцать лет, но есть один аспект этих языков, который я никогда не понимал. Я, очевидно, использовал регулярные слепки то есть MyClass *m = (MyClass *)ptr; повсюду, но, похоже, есть два других типа бросков, и я не знаю разницы. В чем разница ...
Что такое лямбда-выражения в C++11?
Что такое лямбда-выражения в C++11? Когда я буду его использовать? Какой класс проблем они решают, что было невозможно до их введения? несколько примеров, и варианты использования были бы полезны. ...
Самый простой способ преобразовать int в string в C++
какой самый простой способ конвертировать из int в эквиваленте string В C++. Я знаю о двух методах. Есть ли более простой способ? (1) int a = 10; char *intStr = itoa(a); string str = string(intStr); (2) int a = 10; stringstream ss; ss << a; string str = ss.str(); ...
Когда использовать виртуальные деструкторы?
У меня есть твердое понимание большинства теорий OO, но одна вещь, которая меня очень смущает, - это виртуальные деструкторы. Я думал, что деструктор всегда вызывается, независимо от того, что и для каждого объекта в цепочке. когда вы должны сделать их виртуальными и почему? ...
Зачем нужны виртуальные функции в C++?
Я изучаю C++, и я просто попадаю в виртуальные функции. из того, что я прочитал (в книге и в интернете), виртуальные функции-это функции в базовом классе, которые вы можете переопределить в производных классах. но ранее в книге, Когда я узнал о базовом наследовании, я смог переопределить базовые функции в производных классах без использования virtual. Так чего же мне здесь не хватает? Я знаю, что есть больше виртуальных функций, и это, кажется, важно, поэтому я хочу быть ясным, что именно это ...
Почему переменные не могут быть объявлены в операторе switch?
Я всегда задавался этим вопросом-почему вы не можете объявлять переменные после метки case в операторе switch? В C++ вы можете объявлять переменные практически в любом месте (и объявление их близко к первому использованию, очевидно, хорошо), но следующее все равно не будет работать: switch (val) { case VAL: // This won't work int newVal = 42; break; case ANOTHER_VAL: ... break; } выше дает мне следующую ошибку (MSC): инициализация 'newVal' пропускается меткой 'case' ...
Как преобразовать std:: string в const char* или char*?
как я могу преобразовать std::string до char* или const char*? ...
Когда следует использовать класс против структуры в C++?
в каких ситуациях лучше использовать struct против class в C++? ...
Что такое функторы C++ и их использование?
Я постоянно слышу много о функторах в C++. Может ли кто-нибудь дать мне обзор того, что они есть и в каких случаях они были бы полезны? ...
В чем разница между G++ и gcc?
в чем разница между G++ и gcc? Какие из них следует использовать для общей разработки на C++? ...
Что означает T&& (двойной амперсанд) в C++11?
Я изучал некоторые из новых функций C++11, и я заметил, что это двойной амперсанд в объявлении переменных, например T&& var. для начала, как называется этот зверь? Я хотел бы, чтобы Google позволил нам искать знаки препинания, как это. что это в смысле? на первый взгляд, это похоже на двойную ссылку (например, двойные указатели C-стиля T** var), но мне трудно думать об использовании дело за этим. ...
отодвинуть против установки обратно
Я немного запутался относительно разницы между push_back и emplace_back. void emplace_back(Type&& _Val); void push_back(const Type& _Val); void push_back(Type&& _Val); как есть push_back перегрузка принимая ссылку rvalue я не совсем понимаю, что цель emplace_back будет? ...
Закончились ли дни передачи const std::string & в качестве параметра?
Я слышал недавний разговор Херба Саттера, который предположил, что причины пройти std::vector и std::string by const & в основном ушли. Он предположил, что теперь предпочтительнее написать такую функцию, как следующая: std::string do_something ( std::string inval ) { std::string return_val; // ... do stuff ... return return_val; } Я понимаю, что return_val будет rvalue в точке, возвращаемой функцией, и поэтому может быть возвращено с помощью семантики перемещения, которые очень ...
Каков самый простой способ инициализации std:: vector с жестко закодированными элементами?
Я могу создать массив и инициализировать его, как это: int a[] = {10, 20, 30}; как мне создать std::vector и инициализировать его так же элегантно? лучший способ, который я знаю, это: std::vector<int> ints; ints.push_back(10); ints.push_back(20); ints.push_back(30); есть ли лучший способ? ...
Читать файл строка за строкой с помощью ifstream в C++
содержимое файла.txt-это: 5 3 6 4 7 1 10 5 11 6 12 3 12 4 здесь 5 3 - это пара координат. Как обрабатывать эти данные построчно в C++? Я могу получить первую строку, но как мне получить следующую строку файла? ifstream myfile; myfile.open ("text.txt"); ...
Имеет ли ключевое слово "mutable" какую-либо цель, кроме разрешения переменной быть измененной функцией const?
некоторое время назад я наткнулся на код, который ознаменовал собой переменную-член класса с mutable ключевое слово. Насколько я вижу, это просто позволяет вам изменять переменную в const способ: class Foo { private: mutable bool done_; public: void doSomething() const { ...; done_ = true; } }; это только использование этого сайта или есть больше, чем кажется на первый взгляд? С тех пор я использовал эту технику в классе, отметив a boost::mutex как изменчивое разрешение ...
Что такое std:: move (), и когда его следует использовать?
что это? что он делает? , когда его следует использовать? хорошие ссылки. ...
Как использовать массивы в C++?
в C++ массивы в наследство от C, где они используются практически везде. C++ предоставляет абстракции, которые проще в использовании и менее подвержены ошибкам (std::vector<T> начиная с C++98 и std::array<T, n> С C++11), поэтому необходимость в массивах возникает не так часто, как в C. Однако, когда вы читаете устаревший код или взаимодействуете с библиотекой, написанной на C, вы должны иметь четкое представление о том, как работают массивы. этот FAQ разделен на пять части: массив ...