Зачем использовать typedef class {} Name
?
Я узнал об этом в IBM С++ doc, но не намек на использование здесь.
Зачем использовать typedef class {} Name
?
Я узнал об этом в IBM С++ doc, но не намек на использование здесь.
Это похмелье с языка "C".
В C, если у вас есть
struct Pt { int x; int y; };
чтобы объявить переменную этой структуры, вам нужно сделать
struct Pt p;
typedef помог вам избежать этого в C
typedef struct { int x; int y; } Pt;
Теперь вы можете сделать
Pt p;
в C.
В С++ это никогда не было необходимо, потому что
class Pt { int x; int y; };
позволяет вам выполнять
Pt p;
Он не дает никаких заметных преимуществ в С++, как это происходит в C. OTOH, это приводит к ограничениям, потому что этот синтаксис не предоставляет никакого механизма для построения или уничтожения.
то есть. вы не можете использовать имя typedef name в конструкторе или деструкторе.
typedef class { int x; int y; } Pt;
У вас не может быть конструктора Pt и деструктора. Поэтому, по существу, большую часть времени вы не должны делать этого на С++.
В этом ответе предполагается, что в классе есть интересное содержимое, а не только {}
.
В С++ у вас может быть функция с тем же именем, что и класс (для совместимости с C), но вы почти никогда не захотите.
У вас не может быть функции с тем же именем, что и typedef, поэтому это защищает вас от неправильного выбора имен. Почти никто не беспокоится, и даже если вы собираетесь беспокоиться, вы, вероятно, напишете его:
class Name {};
typedef Name Name; // reserve the name
Если код, на который вы ссылаетесь, действительно написан как написанный (я не вижу его, следуя вашей ссылке), то он скорее похож на class Name {};
(что является особенным для написания, почему вы бы назвали пустой класс Name
?), но модифицированный для вышеупомянутого рассмотрения.