Articles of opérateur de

classe surchargée nouvelle et suppression vs placement nouvelle avec une classe de mémoire sur mesure

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 […]

Ambiguïté en surchargeant l’opérateur de casting

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 = […]

Problèmes de surcharge de l’opérateur Const en C ++

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 […]

la nouvelle surcharge suivante perd-elle de la mémoire?

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 […]

Priorité de l’opérateur de conversion implicite

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 […]

Opérateur d’affectation par défaut dans la classe interne avec des membres de référence

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& […]

Quelle est la règle de quatre (et demi)?

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) […]

Priorité des opérateurs de conversion implicite C ++

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 […]

Est-ce une mauvaise forme d’appeler l’opérateur d’affectation par défaut à partir du constructeur de copie?

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? […]

Callling constructeur d’object / destructeur avec un allocateur personnalisé

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 […]