Je suis en train d’enquêter sur les avantages et les inconvénients de l’utilisation des nouvelles surchargées en classe et des suppressions par rapport aux nouvelles de placement. J’entends par là, soit en déclarant chaque classe que je souhaite créer et supprimer avec leurs propres surcharges d’opérateur, soit en utilisant le gestionnaire de mémoire pour me […]
Considérez l’exemple de code ci-dessous: #include using namespace std; class dummy { private: int y; public: dummy(int b = 0) : y(b) { } friend ostream& operator<<(ostream& os, const dummy& obj); }; ostream& operator<<(ostream& os, const dummy& obj) { os << obj.y; return os; } class sample { private: int x; public: sample(int a = […]
J’ai des problèmes avec la surcharge de operator () avec une version constante: #include #include using namespace std; class Masortingx { public: Masortingx(int m, int n) { vector tmp(m, 0.0); data.resize(n, tmp); } ~Masortingx() { } const double & operator()(int ii, int jj) const { cout << " – const-version was called – "; return […]
J’ai rencontré le code suivant: class a { public: void * operator new(size_t l, int nb); double values; }; void *a::operator new (size_t l,int n) { return new char[l+ (n>1 ? n – 1 : 0)*sizeof(double)]; } D’après ce que j’ai obtenu, il est alors utilisé pour avoir un tableau comme structure qui commence par […]
Dans le morceau de code suivant (en direct sur coliru ): #include #include int main() { struct S { operator bool () const { return false; } operator std::ssortingng () const { return “false”; } } s; std::cout << s << "\n"; // outputs 0 } Comment le compilateur choisit-il de choisir la conversion implicite […]
J’ai rencontré un problème que je ne comprends pas et j’espérais que quelqu’un ici pourrait donner un aperçu. Le code simplifié est le suivant (le code d’origine était une implémentation personnalisée de la queue / de la queue): class B { public: B() {}; class C { public: int get(); C(B&b) : b(b){}; private: B& […]
Pour gérer correctement la copie d’objects, la règle de base est la règle de trois . Avec C ++ 11, la sémantique de déplacement est une chose, c’est donc la règle de cinq . Cependant, au cours de discussions ici et sur Internet, j’ai également vu des références à la règle de quatre (et demi) […]
EDIT: Suite au commentaire de Mike Seymour, j’ai remplacé l’ operator std::ssortingng () const; avec l’ operator char * () const; et changé la mise en œuvre en conséquence. Cela permet la diffusion implicite, mais pour une raison quelconque, l’opérateur unsigned long int a préséance sur l’opérateur char *, qui ne se sent tout simplement […]
Considérons une classe dont les copies doivent être faites. La grande majorité des éléments de données de la copie doivent refléter ssortingctement l’original. Toutefois, il existe quelques éléments sélectionnés dont l’état ne doit pas être conservé et doit être réinitialisé . Est-il mauvais d’appeler un opérateur d’assignation par défaut à partir du constructeur de copie? […]
J’ai étudié les allocateurs personnalisés et je les vois assez souvent utiliser une sorte de fonction pour allouer de la mémoire. À des fins de test et d’éducation, j’ai essayé d’en faire un “simple” exemple. Cependant, je comprends une chose fondamentale sur la façon de faire. L’une des principales différences entre malloc et new est […]