なぜ使用するのtypedef class {} Name
ですか?
私はこれをIBMC++ドキュメントで学びましたが、ここで使用するためのヒントはありません。
これは「C」言語からの二日酔いです。
C では、
struct Pt { int x; int y; };
次に、この構造体の変数を宣言するには、次のことを行う必要があります
struct Pt p;
typedef は、C でこれを回避するのに役立ちました
typedef struct { int x; int y; } Pt;
今、あなたはすることができます
Pt p;
Cで。
C++ では、これはまったく必要ありませんでした。
class Pt { int x; int y; };
あなたができるようにしました
Pt p;
C の場合のように、C++ では表記上の利点はありません。OTOH、この構文は構築または破棄のメカニズムを提供しないため、制限につながります。
つまり、コンストラクタまたはデストラクタで typedef name という名前を使用することはできません。
typedef class { int x; int y; } Pt;
Pt というコンストラクターもデストラクタも持つことはできません。したがって、本質的に、ほとんどの場合、これを C++ で行うべきではありません。
この回答は、 だけでなく、クラスに興味深いコンテンツがあることを前提としてい{}
ます。
C++ では、(C との互換性のために) クラスと同じ名前の関数を使用できますが、そうしたくないことはほとんどありません。
typedef と同じ名前の関数を持つことはできないため、これを行うことで、不適切な名前の選択から保護されます。気にする人はほとんどいませんし、気にするつもりでも、おそらく次のように書くでしょう。
class Name {};
typedef Name Name; // reserve the name
あなたが参照しているコードが実際に書かれたとおりである場合(リンクをたどってもわかりません)、それはかなり似ていますclass Name {};
(これは書くのが独特なことです、なぜ空のクラスを呼び出すのName
ですか?)が、変更されました上記の考慮のために。