Si j'ai une classe définie comme
class A {
protected:
~A(){ }
};
alors je peux allouer dynamiquement l'individu ainsi que le tableau d'objets comme
A* ptr1 = new A;
A* ptr2 = new A[10];
Cependant, lorsque je définis le constructeur de cette classe
class A {
public:
A(){}
protected:
~A(){ }
};
puis je peux créer des objets individuels avec
A* ptr = new A;
mais quand j'essaie d'allouer dynamiquement le tableau d'objet avec
A* ptr = new A[10];
Le compilateur (gcc-5.1 et Visual Studio 2015) commence à se plaindre que A::~A() est inaccessible.
Quelqu'un peut-il m'expliquer ce qu'il en est:-
1- Pourquoi y a-t-il une différence de comportement entre un constructeur défini et un constructeur non défini ?
2- Lorsque le constructeur est défini, pourquoi suis-je autorisé à créer un objet individuel et non un tableau d'objets ?