Я видел этот код в книге и много думал об этом.
typedef string *qstring;
const qstring cstr
Какой тип cstr
? спасибо
Ну qstring
- это typedef string *
- указатель на string
. const
в const qstring
относится к внешнему виду qstring
, поэтому он применяется к указателю, что делает cstr
имеет типа string * const
.
Typedefs - это не простая замена текста, поэтому модификаторы никогда не будут влиять на внутренности.
cstr
- указатель на string
, и она является const
. Это не указатель на const string
.
Квалификаторы (const
- это определитель) никогда не проникают в typedef
.
Таким образом, const qstring
type - это string * const
а не const string *
.
cstr имеет тип
string * const
не
const string *