Articles of pointeur

Implémentation correcte de Copy Constructor et Equals Operator sur une classe avec des pointeurs intelligents

Supposons que je veuille implémenter une classe pouvant être copiée afin de pouvoir implémenter le constructeur de copie et l’opérateur d’affectation. Cependant, quelle est la mise en œuvre et le traitement corrects des variables de pointeur uniques et partagées? Voir cet exemple artificiel qui a les deux types de pointeurs: header de fichier #include using […]

Est-ce un comportement non défini en C ++ de déréférencer un pointeur invalide sans utiliser le résultat?

Considérez le morceau de code C ++ suivant: int main() { int* ptr; // Deliberately uninitialized (void) *ptr; // Dereference, do not use result } Ce code entraîne-t-il un comportement indéfini? Je suppose que la réponse est “oui” même si la valeur de *ptr n’est réellement utilisée nulle part. Y at-il une partie de la […]

Idiome sécurisé C ++ pour appeler une fonction membre d’une classe via un membre de la classe shared_ptr

Description du problème Lors de la conception d’un modèle observateur pour mon code, j’ai rencontré la tâche suivante: j’ai une classe Observer qui contient une variable std::shared_ptr et je souhaite utiliser un weak_ptr pour ce pointeur partagé pour appeler en toute sécurité function update() dans Observer (pour une motivation plus détaillée incluant quelques mesures de […]

Indicateurs de fonction de membre C ++

Je fais un petit jeu en C ++ et je découvre les indicateurs de fonction des membres de la classe. Je n’ai aucune idée de les faire fonctionner correctement, mais voici ma tentative. // A struct where the function pointer will be stored for the call // By the way, is there a way to […]

Itération dans un tableau de style C n’utilisant pas de pointeur

J’apprends l’arithmétique de pointeur et j’ai un morceau de code qui me donne des erreurs pendant un certain temps. toute aide serait appréciée. (Je ne pouvais pas le trouver sur SO) int arr [] = {1, 2, 3, 4, 5} ; for (int i = 0 ; i < 5 ; i++) { cout << […]

intrusive_ptr: Pourquoi une classe de base commune n’est-elle pas fournie?

boost::intrusive_ptr requirejs que intrusive_ptr_add_ref et intrusive_ptr_release soient définis. Pourquoi une classe de base n’est-elle pas fournie pour faire cela? Il y a un exemple ici: http://lists.boost.org/Archives/boost/2004/06/66957.php , mais l’affiche indique “Je ne pense pas nécessairement que ce soit une bonne idée”. Pourquoi pas? Mise à jour: Je ne pense pas que le fait que cette […]

passer le pointeur const par référence

Je suis confus que pourquoi le code suivant n’est pas capable de comstackr int foo(const float* &a) { return 0; } int main() { float* a; foo(a); return 0; } Le compilateur donne une erreur en tant que: erreur: initialisation non valide de la référence de type ‘const float * &’ à partir de l’expression […]

Ce comportement non défini en C ++ appelle-t-il une fonction à partir d’un pointeur en suspens?

Une question est venue ici sur SO demandant “Pourquoi cela fonctionne-t-il” lorsqu’un pointeur est devenu suspendu. Les réponses ont été que c’est UB, ce qui signifie que cela peut fonctionner ou non. J’ai appris dans un tutoriel que: #include struct Foo { int member; void function() { std::cout <member = 5; // This will cause […]

Pénalité d’emballage du pointeur intelligent. Mémoization avec std :: map

Je suis actuellement au milieu d’un projet où la performance est d’une importance vitale. Voici quelques-unes de mes questions concernant ce problème. Question 1 Mon projet implique beaucoup de boost::shared_ptr Je sais que la création de pointeurs partagés en cours d’utilisation à l’aide de boost::make_shared est lente, car il y a beaucoup de temps système […]

shared_ptr vs scoped_ptr

scoped_ptr n’est pas scoped_ptr et est en cours de suppression en dehors de la scope. Donc, il est un peu restreint shared_ptr . Il semble donc en outre que dans les cas où vous avez vraiment besoin de restreindre l’opération de copie que shared_ptr est préférable d’utiliser. Parce que parfois vous ne savez pas que […]