iostream
Ils remplacent malloc et free en c.
Les commandes new et delete sont requisent pour alouer des classes et en stack et bien appeler de constructeur de l'objet / le destructeur
#include#include class Student { private: std::string _login; public: Student(std::string login) : _login(login) { std::cout << "Student " << this->_login << " is born" << std::endl; } ~Student() { std::cout << "Student " << this->_login << " died" << std::endl; } }; int main () { // Allocation sur la stack (sur la pile) et desalloue automatiquement Student bob = Student("bfubar"); // Allocation dynamique avec new sur la Heap (sur le tas) et desalloue avec delete Student* jim = new Student("jfubar"); delete jim; // Appelle le destructeur de jim return (0); // Appelle le destructeur de bob }
Student bfubar is born Student jfubar is born Student jfubar died Student bfubar died
Dans le cas de création de tableaux d'objets, il est impossible de passer des paramètres, donc d'initialiser les objets par programme.
#include#include class Student { private: std::string _login; public: // aucun parametre n'est possible dans le constructeur par defaut d'une array Student() : _login("ldefault") { std::cout << "Student " << this->_login << " is born" << std::endl; } ~Student() { std::cout << "Student " << this->_login << " died" << std::endl; } }; int main () { // Allocation dynamique sur la Heap (sur le tas) de 42 objets student Student* students = new Student[42]; delete [] students; // Appelle le destructeur de tableau students return (0); }
... 42x Student ldefault is born Student ldefault is born Student ldefault died Student ldefault died ... 42x