Questions marquées «c++»

C ++ est un langage de programmation à usage général. Il a été initialement conçu comme une extension de C et a une syntaxe similaire, mais c'est maintenant un langage complètement différent. Utilisez cette balise pour les questions sur le code (à compiler) avec un compilateur C ++. Utilisez une balise spécifique à la version pour les questions liées à une révision standard spécifique [C ++ 11], [C ++ 14], [C ++ 17] ou [C ++ 20], etc.

2
Pourquoi ne pouvons-nous pas créer des objets trivialement constructibles en utilisant malloc si le constructeur trivial par défaut n'effectue aucune action?
J'ai du mal à comprendre le paragraphe suivant cité dans cppreference sur le constructeur par défaut trivial. J'ai recherché stackoverflow mais je n'ai toujours pas obtenu de réponse claire. Alors s'il vous plaît, aidez-moi. Un constructeur par défaut trivial est un constructeur qui n'effectue aucune action. Tous les types de …

2
les constructeurs de copier-déplacer sont-ils des amis automatiques?
Nous pouvons accéder aux variables privées d'une autre classe lorsque nous définissons des constructeurs de copie ou de déplacement. Est-ce que C ++ se fait friendautomatiquement? Par exemple: my_str::my_str(my_str&& m) { size_ = m.size_; //accessing private variable another my_str class buff_ = m.buff_; //accessing private variable another my_str class m.buff_ …
14 c++  friend-class 

3
Un nom de classe complet jusqu'à la portée globale est-il jamais requis pour les définitions de fonctions membres hors ligne?
Cette question m'a amené à me demander s'il est jamais utile / nécessaire de qualifier pleinement les noms de classe (y compris l'opérateur de portée globale) dans une définition de fonction membre hors classe. D'une part, je n'ai jamais vu cela se faire auparavant (et la syntaxe pour le faire …

3
Pourquoi la dimension d'un tableau fait-elle partie de son type?
En lisant le livre C ++ Primer, je suis tombé sur cette déclaration: "Le nombre d'éléments dans un tableau fait partie du type du tableau." Je voulais donc savoir en utilisant le code suivant: #include<iostream> int main() { char Array1[]{'H', 'e', 'l', 'p'}; char Array2[]{'P', 'l', 'e', 'a', 's', 'e'}; …
14 c++  arrays  c++11 



1
Pourquoi std :: swap ne fonctionne-t-il pas sur les éléments vectoriels <bool> sous Clang / Win?
J'ai un code comme celui-ci: #include &lt;vector&gt; #include &lt;utility&gt; int main() { std::vector&lt;bool&gt; vb{true, false}; std::swap(vb[0], vb[1]); } Arguments sur la raison de vector&lt;bool&gt;côté, cela fonctionnait très bien sur: Clang pour Mac Visual Studio pour Windows GCC pour Linux Ensuite, j'ai essayé de le construire avec Clang sur Windows et …



3
Surcharger une fonction lambda
Comment surcharger une simple fonction lambda locale? SSE du problème d'origine: #include &lt;iostream&gt; #include &lt;map&gt; void read() { static std::string line; std::getline(std::cin, line); auto translate = [](int idx) { constexpr static int table[8]{ 7,6,5,4,3,2,1,0 }; return table[idx]; }; auto translate = [](char c) { std::map&lt;char, int&gt; table{ {'a', 0}, {'b', …

3
La fonction de modèle ne fonctionne pas pour la fonction pointeur-sur-membre prenant const ref
Dernièrement, j'ai écrit une fonction de modèle pour résoudre certaines répétitions de code. Cela ressemble à ceci: template&lt;class T, class R, class... Args&gt; R call_or_throw(const std::weak_ptr&lt;T&gt;&amp; ptr, const std::string&amp; error, R (T::*fun)(Args...), Args... args) { if (auto sp = ptr.lock()) { return std::invoke(fun, *sp, args...); } else { throw std::runtime_error(error.c_str()); …
14 c++  templates 

3
std :: bit_cast avec std :: array
Dans son récent discours «Type punning en C ++ moderne», Timur Doumler a déclaré que std::bit_castcela ne peut pas être utilisé pour convertir un bit floaten un unsigned char[4]car les tableaux de style C ne peuvent pas être renvoyés d'une fonction. Nous devons utiliser std::memcpyou attendre C ++ 23 (ou …

1
Comment fonctionne l'implémentation C ++ nullptr?
Je suis curieux de savoir comment ça nullptrmarche. Les normes N4659 et N4849 stipulent: il doit avoir du type std::nullptr_t; vous ne pouvez pas prendre son adresse; il peut être directement converti en pointeur et pointeur en membre; sizeof(std::nullptr_t) == sizeof(void*); sa conversion en boolest false; sa valeur peut être …

3
Copier l'initialisation de la liste? Pourquoi cela compile-t-il?
J'utilise Microsoft Visual Studio Community 2019, V16.5.2. Je veux tester initialisation de la liste Veuillez consulter le programme de test suivant: #include &lt;string&gt; void foo(std::string str) {} int main() { foo( {"str1", "str2"} ); return 0; } Cela se compile sans erreur et sans avertissement. Pourquoi? Il donne une erreur …
13 c++ 

1
std :: is_constructible retourne une valeur incohérente pour le constructeur privé
Quelles sont les règles de std::is_constructiblegestion des constructeurs privés? Étant donné le code suivant: #include &lt;iostream&gt; class Class { private: Class() { } }; template &lt;typename T&gt; class Test { public: static void test() { std::cout //&lt;&lt; std::is_constructible&lt;Class&gt;::value &lt;&lt; std::is_constructible&lt;T&gt;::value &lt;&lt; std::endl; } }; int main() { Test&lt;Class&gt;::test(); } Cette …
13 c++  typetraits 

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.