const char * vs char * (C ++)

Pour le programme suivant:

int DivZero(int, int, int);

int main()
{
    try {
        cout << DivZero(1,0,2) << endl;
    }
    catch(char* e)
    {
        cout << "Exception is thrown!" << endl;
        cout << e << endl;
        return 1;
    }
    return 0;
}

int DivZero(int a, int b, int c)
{
    if( a <= 0 || b <= 0 || c <= 0)
        throw "All parameters must be greater than 0.";
    return b/c + a;
}

À l'aide de char* e donnera

résilier appelé après avoir jeté un
exemple de 'const char*'

Selon Gestion Des Exceptions C++ , la solution est d'utiliser const char* à la place.

Lecture de fonction (const char *) par rapport à la fonction (char *) dit que

Le type de "Chaîne" est char*', not
const char*'

(c'est un C, je pense...)

Lecture supplémentaire sur un Débordement de Pile char* vs const char* en paramètre me dit la différence. Mais aucun d'eux adresse mes questions:

  1. Il semble que les deux char* et chaîne* avoir de limite sur le nombre de caractères. Suis-je la corriger?
  2. Comment ajouter le mot clé const à char* élimine cette limite? Je pensais que le seul but de const est de définir un indicateur qui dit "inmodifiable". Je comprends que const char* e signifie "le pointeur qui pointe vers inmodifiable type char".

La solution à cette erreur est d'utiliser const char* e.

Même const string* e ne fonctionne pas. (juste pour le plaisir de test...)

Quelqu'un peut-il expliquer, s'il vous plaît? Merci!!!!

Par ailleurs, je suis sur Ubuntu, compilé par GCC, sur Eclipse.

source d'informationauteur CppLearner