c++ char * initialisation dans le constructeur

Je suis juste curieux, je veux savoir ce qui se passe ici:

class Test
{
char * name;
public:
Test(char * c) : name(c){}
};

1) Pourquoi ne pas Test(const char * c) : name(c){} travail? Parce que char * name n'est pas const? Mais ce:

main(){
char * name = "Peter";
}

name est de type char*, mais "Peter" est const char*, non? Alors, comment fait-que l'initialisation de travail?

2) Test(char * c) : name(c){ c[0] = 'a'; } - ce qui bloque le programme. Pourquoi?

Désolé pour mon ignorance.

  • Que voulez-vous dire name(c) ne fonctionne pas? Définir des "œuvres".
  • invalid conversion from const char* char*
  • "Peter" est const char[6], pas const char *.
  • Sur une note pratique, ce que vous voulez, au contraire, est std::string name
  • c'est pour un examen, je ne pense pas que nous sommes autorisés à utiliser std::string parce que ce n'est pas une partie de la formation
InformationsquelleAutor tuks | 2013-09-23