Pourquoi devrais-je utiliser un pointeur plutôt que l'objet lui-même?

Je suis issu d'une Java d'arrière-plan et ont commencé à travailler avec des objets en C++. Mais une chose qui m'est venue est que les gens utilisent souvent des pointeurs vers des objets plutôt que les objets eux-mêmes, par exemple cette déclaration:

Object *myObject = new Object;

plutôt que:

Object myObject;

Ou au lieu d'utiliser une fonction, disons testFunc(), comme ceci:

myObject.testFunc();

nous devons écrire:

myObject->testFunc();

Mais je ne peux pas comprendre pourquoi devrions-nous faire de cette façon. Je suppose que cela a à voir avec l'efficacité et la rapidité puisque nous obtenir un accès direct à l'adresse de la mémoire. Suis-je le droit?

  • Bravo à vous pour la remise en cause de la pratique plutôt que de simplement suivre. La plupart du temps, les pointeurs sont sur-utilisés.
  • Si vous ne voyez pas de raison d'utiliser des pointeurs, n'en ont pas. Préférez des objets. Préférez les objets avant de les unique_ptr avant shared_ptr avant premières des pointeurs.
  • remarque: en java, tout(sauf types de base) est un pointeur. de sorte que vous devrait plutôt demander le contraire: pourquoi ai-je besoin que de simples objets?
  • Notez que, en Java, les pointeurs sont cachés par la syntaxe. En C++, la différence entre un pointeur et un non-pointeur est rendu explicite dans le code. Java utilise des pointeurs partout.
  • En C++11 vous avez besoin de pointeurs beaucoup moins souvent.
  • Ils sont proches, mais pas identiques
  • Étroite trop large? Sérieusement? Personnes, veuillez, noter que ce Java++ mode de programmation est très commun et l'un des problèmes les plus importants sur le C++ de la communauté. Il devrait être pris au sérieux.
  • Plus de cinq ans après le Débordement de Pile lancé il doit y avoir un double quelque part à une telle question fondamentale .
  • Liée (mais pas un doublon): C++ objets: Quand dois-je utiliser un pointeur ou une référence?
  • j'ai pensé la même chose l'autre jour, mais hélas, j'ai eu tort. Peut-être vous aussi. =)
  • si vous pensez que c'est trop large.. et peut-être un peu conceptuel peut-être qu'il appartient à programmers.stackexchange.com fwiw ...
  • Cette question couvre beaucoup de le même territoire, mais avec une prise de conscience de moderne pointeur de gestion: Quel est l'objectif de l'étendue de pointeur?
  • La chance de se refermer sur closeoverflow est directement proportionnelle à l'élégance et de l'importance de la question.
  • Que pensez-vous que vous faites en Java?
  • Un programmeur Java ne sait pas qu'en Java, chaque objet tapé chose est implicitement par référence?
  • Protip: Utilisation make_unique (ce qui n'est pas la norme, mais bien pratiqué) ou make_shared au lieu d'utiliser le mot clé new. Nu ptrs sont mauvais. herbsutter.com/gotw/_102
  • ou plutôt, Java "références" sont des pointeurs avec supprimés des opérateurs arithmétiques.
  • Pourquoi devrais-je utiliser une adresse de la chambre où j'ai pu utiliser seulement la maison elle-même? Au lieu de dire à Amazon pour envoyer mon colis à 123 Nulle part Saint, je viens apporter ma maison à l'entrepôt, ils ont mis mes achats, et je le ramener.
  • J'allais dire la même chose que @immibis, parce qu'un pointeur est plus léger qu'un objet
  • apportez une copie de votre maison à l'entrepôt, de retour d'une autre copie et l'attribuer à votre maison et à soutenir l'industrie de la construction.

InformationsquelleAutor gEdringer | 2014-03-03