typedef class {} Name
を使用する理由
私はこれを IBM C++ doc で学びました。ここで使用するヒントはありません。
これは「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. OTOHの場合のように、C++には表記上の利点はありません。この構文は構築や破棄のメカニズムを提供しないため、制限につながります。
つまり、コンストラクタまたはデストラクタで名前typedef名を使用することはできません。
typedef class { int x; int y; } Pt;
Ptと呼ばれるコンストラクターやデストラクターを持つことはできません。つまり、本質的には、ほとんどの場合、C++でこれを行うべきではありません。
この回答は、{}
だけでなく、クラスに興味深いコンテンツがあることを前提としています。
C++では、クラスと同じ名前の関数を使用できますが(Cとの互換性のため)、ほとんどの場合、そうしたくありません。
Typedefと同じ名前の関数を使用することはできないため、これを行うことにより、不適切な名前の選択から保護されます。ほとんど誰も気にしない、そしてあなたが気になるつもりなら、おそらくそれを書くでしょう:
class Name {};
typedef Name Name; // reserve the name
あなたが実際に参照しているコードが書かれているとおりである場合(リンクをたどってもコードが表示されない)、それはclass Name {};
のようになります(これは書くのが難しいので、なぜ空のクラスを呼び出すのでしょうか) Name
?)、ただし上記の考慮事項に合わせて変更。