Mon code compile et s'exécute, mais on m'a dit que c'est assez problématique. Je ne comprends pas où je vais mal.Code problématique ??? Y a-t-il un problème avec mon destructeur?
Aussi, n'est-ce pas supposé avoir tort de déclarer "char _arrName [2];" et pour faire l'assignation "_arrName [2] = '\ 0';" ? N'est-ce pas un bug "hors limites"?
#include <iostream>
using namespace std;
class Base {
protected:
char* _name;
public:
virtual ~Base() { cout << "Base dtor of " << _name << endl; };
};
class D1: public Base {
char _arrName[2];
public:
D1() {
_name= _arrName;
_arrName[0]= 'D';
_arrName[1]= '1';
_arrName[2]= '\0';
}
virtual ~D1() { cout << "D1 dtor" << endl; }
};
int main() {
Base* arr[2];
arr[0]= new D1();
delete arr[0];
}
Votre mise en forme est assez problématique. Est-ce vraiment la façon dont vous codez ou avez-vous juste une erreur copier + coller? –
Pourquoi 'char * _name;' et 'char _arrName [2]'? Qu'est-ce qui ne va pas avec 'std :: string'? –