198

C++ では、変数の型をどのように見つけますか?

4

10 に答える 10

237

typeid 演算子を使用できます。

#include <typeinfo>
...
cout << typeid(variable).name() << endl;
于 2012-07-03T12:30:25.957 に答える
21

変数がある場合

int k;

あなたはを使用してそのタイプを取得することができます

cout << typeid(k).name() << endl;

SOに関する次のスレッドを参照してください。同様の質問

于 2012-07-03T12:31:21.990 に答える
15

C++ と Javascript の主な違いは、C++ は静的型付け言語であり、JavaScript は動的であることです。

動的型付き言語では、変数は何でも含むことができ、その型は保持する値によって瞬間的に与えられます。静的型付き言語では、変数の型は宣言されており、変更できません。

動的ディスパッチとオブジェクト合成とサブタイピング (継承と仮想関数)、および静的ディスパッチとスーパータイピング (テンプレート CRTP による) が存在する可能性がありますが、いずれの場合も、変数の型はコンパイラーに認識されている必要があります。

それが何であるか、またはその可能性がわからない場合は、言語に動的な型システムがあるため、何かを設計したためです。

その場合は、使用している言語にとって自然ではない土地に入ることになるため、デザインを再考する必要があります (キャタピラーで高速道路に行く、または車で水の中を行くようなものです)。

于 2012-07-03T13:33:28.247 に答える
9

通常、C++ で変数の型を見つけたいというのは間違った質問です。これは、C や Pascal などの手続き型言語から受け継いだものである傾向があります。

型に応じて異なる動作をコーディングしたい場合は、関数のオーバーロードオブジェクトの継承などについて学習してみてください。これは、C++ の初日にすぐに理解できるものではありませんが、続けてください。

于 2012-07-03T12:34:18.520 に答える
4
#include <typeinfo>

...
string s = typeid(YourClass).name()
于 2012-07-03T12:31:30.850 に答える