Considérez le programme suivant: #include <iostream> int main = ( std::cout << "C++ is excellent!\n", 195 ); En utilisant g ++ 4.8.1 (mingw64) sur le système d'exploitation Windows 7, le programme se compile et fonctionne correctement, imprimant: Le C ++ est excellent! à la console. mainsemble être une variable globale …
Dans Bjarne Stroustrup's The C ++ Programming Language 4th edition section 36.3.6 STL-like Operations, le code suivant est utilisé comme exemple de chaînage : void f2() { std::string s = "but I have heard it works even if you don't believe in it" ; s.replace(0, 4, "" ).replace( s.find( "even" …
Est-ce un comportement non défini pour imprimer des pointeurs nuls avec le %pspécificateur de conversion? #include <stdio.h> int main(void) { void *p = NULL; printf("%p", p); return 0; } La question s'applique au standard C, et non aux implémentations C.
Je viens de regarder Stephan T. Lavavej parler CppCon 2018de "Déduction d'argument de modèle de classe", où, à un moment donné, il dit incidemment: Dans le type C ++, les informations ne circulent presque jamais en arrière ... J'ai dû dire «presque» car il y a un ou deux cas, …
https://godbolt.org/z/cyBiWY Je peux voir deux 'some'littéraux dans le code assembleur généré par MSVC, mais un seul avec clang et gcc. Cela conduit à des résultats totalement différents de l'exécution du code. static const char *A = "some"; static const char *B = "some"; void f() { if (A == B) …
Les parenthèses en C ++ sont utilisées à de nombreux endroits: par exemple dans les appels de fonction et les expressions de regroupement pour remplacer la priorité des opérateurs. En dehors des parenthèses supplémentaires illégales (comme autour des listes d'arguments d'appel de fonction), une règle générale - mais pas absolue …
Le code suivant est assez trivial et je m'attendais à ce qu'il se compile correctement. struct A { struct B { int i = 0; }; B b; A(const B& _b = B()) : b(_b) {} }; J'ai testé ce code avec g ++ version 4.7.2, 4.8.1, clang ++ 3.2 …
Imaginons que nous ayons une structure pour contenir 3 doubles avec des fonctions membres: struct Vector { double x, y, z; // ... Vector &negate() { x = -x; y = -y; z = -z; return *this; } Vector &normalize() { double s = 1./sqrt(x*x+y*y+z*z); x *= s; y *= …
class C { using namespace std; // error }; namespace N { using namespace std; // ok } int main () { using namespace std; // ok } Edit : Vous voulez connaître la motivation derrière cela.
Disons que j'ai un type et que je veux rendre son constructeur par défaut privé. J'écris ce qui suit: class C { C() = default; }; int main() { C c; // error: C::C() is private within this context (g++) // error: calling a private constructor of class 'C' (clang++) …
Considérez la déclaration suivante: *((char*)NULL) = 0; //undefined behavior Il invoque clairement un comportement indéfini. L'existence d'une telle instruction dans un programme donné signifie-t-elle que l'ensemble du programme est indéfini ou que le comportement ne devient indéfini qu'une fois que le flux de contrôle atteint cette instruction? Le programme suivant …
Lors de l'intégration d'une application Django que je n'avais jamais utilisée auparavant, j'ai trouvé deux façons différentes de définir des fonctions dans les classes. L'auteur semble les utiliser tous les deux très intentionnellement. Le premier est celui que j'utilise beaucoup moi-même: class Dummy(object): def some_function(self,*args,**kwargs): do something here self is …
Considérons cette méthode asynchrone très simple: static async Task myMethodAsync() { await Task.Delay(500); } Lorsque je compile ceci avec VS2013 (pré-compilateur Roslyn), la machine à états générée est une structure. private struct <myMethodAsync>d__0 : IAsyncStateMachine { ... void IAsyncStateMachine.MoveNext() { ... } } Lorsque je le compile avec VS2015 (Roslyn), …
(int) + 4*5; Pourquoi est-ce possible (ajouter un type avec une valeur) ? (essayé avec g ++ et gcc.) Je sais que cela n'a pas de sens (et n'a aucun effet), mais je veux savoir pourquoi c'est possible.
Nous savons qu'une "variable const" indique qu'une fois assignée, vous ne pouvez pas changer la variable, comme ceci: int const i = 1; i = 2; Le programme ci-dessus échouera à se compiler; gcc invite avec une erreur: assignment of read-only variable 'i' Pas de problème, je peux le comprendre, …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.