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