typedef für nen pointer zu verwenden wie in deinem beispiel ist ne gute idee, wenn du gerne mehrere variablen in einer zeile definierst.
Weil
int* a,b,c;
erzeugt nur einen int* (a) b und c sind int
Bei
typedef int* pint;
pint a,b,c;
sind alle drei ein int*
Außerdem ist es praktisch für Typen bestimmt Größe zum Beispiel typedef int int32;
so musst nur das typedef ändern, wenn int mal keine 32bits mehr groß ist, auf nen 32bit großen typ
Dann gibts noch den Fall, dass der echte Typ unbekannt ist und man nur nen abstrakten Typ hat wie z.B. der Typ streamsize den die c++ streams verwenden zur Angabe der Streamgröße.
Und dann gibts noch den Fall bei templates, dort ist ein typedef wichtig, damit man einheitliche Bezeichner hat, wenn diese variabel sind.
zum beispiel char_type in den c++ streams. Da ist char_type "char" in basic_istream<char>, aber "wchar_t" in basic_istream<wchar_t>
In der STL findest du überall solche typedefs.
Und dann gibts noch den häufigsten Fall wo du ein typedef verwenden wirst, so ist ein std::map< std::string, std::vector< int > > recht unhandlich, viel schöner ist es da mit nem typedef zu arbeiten
typedef std::map< std::string, std::vector< int > > mymap;
und für den iterator noch eines
typedef mymap::iterator mymapiter;
Und schon kannst du viel übersichtlicher arbeiten
Was schade ist, es gibt keine template-typedefs, d.h. du kannst folgendes nicht machen
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
|
template< class T >
struct Test
{
};
template< class U >
struct Versuch
{
typedef Test< U > TestTyp;
};
|
Besonders merkwürdig, wenn man bedenkt, dass es friend-templates gibt.