Un type de données abstrait qui simule un pointeur tout en fournissant des fonctionnalités supplémentaires, telles que la collecte automatique des déchets ou la vérification des limites

smart-pointers...

Quelqu'un peut-il expliquer pourquoi le destructeur de la classe bar est appelé dans la ligne où l'objet du même type est initialisé? #include <memory> #include <iostream> using namespace std; class bar { public: bar() {} ~bar() { std::cout << "destructor....
6 mai 2020 à 04:28
J'ai appris que lorsque vous utilisez des pointeurs dans une classe, vous devez implémenter la règle de 5. Si vous n'utilisez pas de pointeurs, vous pouvez, et en fait, il est préférable d'utiliser les valeurs par défaut. Cependant, comment cela fonctionne-t-il avec des pointeurs intelligents? Par e....
J'y ai réfléchi récemment, et le seul argument que je peux voir pour avoir un opérateur d'égalité pour std :: unique_ptr est l'exhaustivité de sorte que tous les pointeurs intelligents de la bibliothèque de modèles standard l'ont. Mais à moins que vous n'ayez fait quelque chose de mal, je ne vois au....
Dans ce code: void f(std::unique_ptr<int> q) { } void g() { std::unique_ptr<int> p{new int{42}}; f(std::move(p)); } À quelle ligne p est-il désalloué? Je dirais à la sortie de la fonction f car elle a été déplacée là-bas en utilisant std :: move, mais je ne suis pas sûr ni sûr de cette rép....
Tout d'abord, je sais que nous devrions utiliser std::make_unique() au lieu d'appeler le constructeur std::unique_ptr et je sais pourquoi. Mais je regardais la documentation de std::unique_ptr pour passer le temps et affiner mes connaissances à ce sujet et j'ai trouvé le exemples suivants sur l'util....
19 sept. 2019 à 17:47