Литеральная строка в C ++ является указателем на строку ... в сущности, в некотором роде.Немного педантичнее, это массив символов, за которым следует символ целочисленного значения ноль.Символ - это целое число.Erm ... В C ++ строковый литерал не является экземпляром строкового класса STL, std :: string.Это довольно необычно среди объектно-ориентированных языков, если не сказать больше.Это артефакт дикой и безрассудной молодости C ++.
Если вы назначаете строковый литерал чему-либо (если только вы не используете его в качестве инициализатора для массива) или передаете его в функцию, то назначается или передается адрес первого символа в массиве -указатель на строку.И это то, что вы видите в вызове вашего конструктора: То, что передается конструктору, это адрес первого символа в строковом литерале , который сохраняется ... везде, где компилятор считает, что он принадлежит,Не наше дело, где это.
Эта строка объявляет pReason как переменную-член класса.Константная часть означает, что вы не можете изменить строку, на которую она указывает (если вы не сделаете это изо всех сил, но на самом деле не должны).
const char * pReason;
В C ++ вы так говоритекомпилятор, что ваш класс будет иметь член с этим типом и этим именем.