#include <iostream>
#include <string.h> // strlen, strcpy
Ici, nous avons la classe Base avec un ctor non-par défaut, un getter pour le nom et son destructeur. La classe dérivée hérite publiquement de Base et possède son propre ctor non-par défaut.Opérateur d'indice de surcharge pour le membre de base
class Derived : public Base {
public:
Derived(const char* str)
: Base(str){}
};
Ma question est de savoir comment faire pour que la dernière ligne de code dans main fonctionne?
int main()
{
char d1name[] {"d1"};
Derived d1(d1name);
std::cout << d1.name() << std::endl;
d1.name[0] = 'D';
}
Vous semblez avoir oublié que le nom réel des chaînes est *** null terminé *** byte strings. Ce terminateur nul n'est pas compté par 'strlen'. Pourquoi ne le faites-vous pas facilement et utilisez 'std :: string'? –
En ce qui concerne votre question, vous la faites fonctionner soit en faisant, par exemple, 'd1.name() [0]', ou en [en savoir plus sur la surcharge de l'opérateur] (http://en.cppreference.com/w/cpp/language/operators). Peut-être que vous devriez [trouver un bon livre pour débutants] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) qui devrait expliquer tout cela. –
Copie possible de [Surcharge de l'opérateur] (https://stackoverflow.com/questions/4421706/operator-overloading) –