Je voulais écrire une fonction qui sera multi-plateforme (win32 et linux) et renvoyer une représentation sous forme de chaîne de la date / heure [hh: mm: ss jj-mm-aaaa]. Sachant que je veux juste utiliser la chaîne retournée comme temporaire dans un stream comme ci-dessous: std::cout << DateTime() << std::endl; J’ai envisagé d’écrire une fonction avec […]
J’essayais d’ utiliser unique_ptr et j’ai écrit du code simple pour vérifier son fonctionnement avec la sémantique de déplacement. #include #include using namespace std; class X { public: X(){} ~X() { cout << "Destructor X" << endl; } void Print() { cout << "X" << endl; } }; int main() { unique_ptr ptr(new X()); ptr->Print(); […]
Je sais que c’est un très vieux débat qui a déjà fait l’object de nombreuses discussions dans le monde entier. Mais j’ai actuellement du mal à choisir la méthode à utiliser plutôt qu’une autre entre des tableaux statiques et dynamics dans un cas particulier. En fait, je n’aurais pas utilisé C ++ 11, j’aurais utilisé […]
Voici un moyen très simple de définir une affectation de déplacement pour la plupart des classes avec un constructeur de déplacement: class Foo { public: Foo(Foo&& foo); // you still have to write this one Foo& operator=(Foo&& foo) { if (this != &foo) { // avoid destructing the only copy this->~Foo(); // call your own […]
J’essaie d’apprendre la nouvelle fonctionnalité du C ++, à savoir le constructeur de déplacements et l’affectation X::operator=(X&&) . J’ai trouvé un exemple intéressant, mais la seule chose que je ne comprends même pas, mais qui ne soit pas du même avis, est une ligne dans l’opérateur de déplacement et d’assignation. (marqué dans le code ci-dessous): […]
Edit: rendu Foo and Bar un peu moins sortingvial, et le remplacement direct par shared_ptr plus difficile. unique_ptr être utilisé comme un moyen plus simple d’implémenter la sémantique de déplacement? Pour un cours comme class Foo { int* m_pInts; bool usedNew; // other members … public: Foo(size_t num, bool useNew=true) : usedNew(useNew) { if (usedNew) […]
Essayer de fournir une solution à std :: ssortingng_view et std :: ssortingng dans std :: unordered_set , je m’amuse à remplacer std::unordered_set avec std::unordered_map<std::string_view, std::unique_ptr> (la valeur est std::unique_ptr car l’optimisation de la petite chaîne signifie que l’adresse des données sous-jacentes de la ssortingng ne sera pas toujours transférée à la suite de std::move […]
L’article de MSDN, Comment: écrire un Move Constuctor , contient la recommandation suivante. Si vous fournissez à la fois un constructeur de déplacement et un opérateur d’affectation de déplacement pour votre classe, vous pouvez éliminer le code redondant en écrivant le constructeur de déplacement pour appeler l’opérateur d’affectation de déplacement. L’exemple suivant montre une version […]
J’écris une implémentation de la bibliothèque standard c ++ pour étude. La norme C ++ 11 dit que for_each renvoie std::move(f) . template Function for_each(InputIterator first, InputIterator last, Function f); Returns: std::move(f). Je pensais que la variable locale de scope de la fonction est construite par déplacement lorsqu’elle est renvoyée. Dois-je retourner move(f) explicitement?
Considérons la fonction suivante: Foo foo(Foo x) { return x; } Est-ce que return x appellera le constructeur de copie ou le constructeur de déménagement? (Laissons NRVO de côté ici.) Pour enquêter, j’ai écrit un simple cours de Foo qui ne peut être déplacé mais pas copié: struct Foo { Foo() = default; Foo(const Foo&) […]