depuis que je suis venu de C# à C++ tout semble fou pour moi en C++. Je me demandais si quelqu'un pouvait me expliquer pourquoi nous avons ce genre d'instancier en C++: Méthode 1:type différent d'instanciation sur C++
ClassA obj1; // this is going to stack
Méthode 2:
ClassA *obj1 = new ClassA(); //this is going to heap
alors que nous n'avons pas le instanciation commun en C# façon sur C++:
ClassA obj2 = new obj2();
et une autre question method1 je reçois une instance de la ClassA mais sans(), ce qui est le endroit exact, je suis confus, pourquoi devons-nous instater comme ça? notre ClassA a un constructeur mais instanciation sans parenthèses ??? comment se fait-il que nous appelons son constructeur?
p.s: J'ai lu ces sujets:
Different methods for instantiating an object in C++
Stack, Static, and Heap in C++
What and where are the stack and heap?
C# n'a pas deux méthodes d'instanciation car le runtime gère la mémoire pour vous. –
Dans la méthode 1, obj est une référence à un objet ClassA. Dans la méthode 2, obj est un pointeur vers un objet ClassA. new in C++ renvoie un pointeur vers la mémoire allouée. Vous devez dire à nouveau quel type d'objet créer. C'est en partie pourquoi la troisième option ne fonctionne pas. obj2 n'a pas été défini en tant qu'objet. À ce stade du code, il s'agit simplement d'un texte qui servira d'identifiant pour une référence à un objet une fois créé. – iheanyi