typedef
ing необработанные типы указателей бессмысленны (ха!). Он не обеспечивает никакой реальной абстракции (потребители все равно должны понимать, что типы являются указателями, и они должны выяснить, как анализировать любое соглашение об именах, которое вы используете для имени типа, чтобы определить, что такое тип указателя).
Это также плохой тон, потому что если у вас:
typedef T* T_ptr;
Тогда const T* foo
и const T_ptr bar
это две большие разницы. (foo
— это указатель на const T
; это обещание не изменять указатель через этот указатель. bar
— это указатель, который сам является const
; его нельзя изменить, чтобы он указывал на что-то другое.)
Первый случай (указатель на-const
) важен: он помогает обеспечить выполнение контрактов функций.
Второй случай гораздо, гораздо менее полезен.
Поэтому, если вы должны были добавить typedef
для типа указателя, чтобы быть полезным, вам нужно было бы создать два:
typedef T* T_ptr;
typedef const T* const_T_ptr;
Допустимое исключение в C++, когда у вас есть классы интеллектуальных указателей. В этих случаях ввод boost::shared_ptr<T>
может быть достаточно утомительным, поэтому создание для него typedef
является разумным удобством.
person
jamesdlin
schedule
12.08.2010