0

'int'がクラスとして定義されているかどうかを知りたいのですが、ヘッダーファイルのどこかにあるように、それらはintという名前のクラスです。

class int
{

}

そして、変数を宣言すると、クラスintのインスタンスが作成されますか?'int'がクラスの場合、どのファイルに保存されますか?

4

4 に答える 4

4

いいえ; 「クラスタイプ」のタイプでintはありません。いわゆる「スカラー」型です。

特定のオブジェクト型Tがスカラー、配列、共用体、またはクラス型のいずれであるかをより一般的に判断するには、を#include <type_traits>使用できます。std::is_scalar<T>::valueis_arrayis_unionis_class

(さらに、すべての型がオブジェクト型であるとは限らないことに注意してください。参照型と関数型もあります。std::is_objectandis_functionとを使用しis_referenceて、最初にその区別を行うことができます。)

于 2012-10-12T19:44:08.897 に答える
1

intクラスではなく、ネイティブ型です。

int を宣言する場合:

int x;

のインスタンスを作成しますint

この点で、C++ は他の多くの言語とは異なります。たとえば Java や Ruby のように、「すべてがオブジェクト」です。これは通常、すべてが 1 つのルート クラスから派生しているか、少なくともそのように見えることを意味します。

たとえば、すべてが最終的に から派生している Ruby を考えてみましょうObjectObjectは、本格的なクラスとして実装されます。同様のメソッドと、to_sそれらのメソッドを実装するコードがあります。

C++ はそうではありません。C++ には、 などint、何からも派生していない非常に基本的な型があります。これらの型の背後にコードはなく、メソッドもありません。次のようなことはできません。

int x = 42;
string s = x.to_s();

、またはどのメソッドにもメソッドto_s()がないためです。int

あなたはまた尋ねました、

「int」がクラスの場合、どのファイルに格納されていますか??

intどのファイルにも「保存」されません。an の意味と定義はint、コンパイラ自体に組み込まれています。intがどのように定義されているかを確認するためにマシン上で開くことができるファイルはありません。次のようなことをすると:

int x = 42;
x += 77;

...コンパイラは、77 を 42 に加算する方法を知るためにヘッダー ファイルを調べる必要はありませんint。ほとんどアプリオリな知識のように、それは「ただそこにある」だけです。

コンパイラはどのようにすでに知っていますか? コンパイラーを書いた人 (おそらく C または C++ を使用) がその知識をコーディングしたためです。彼らは、準拠コンパイラがどのように動作するべきかを正確に説明する C++ 標準と呼ばれるドキュメントに従いました。

于 2012-10-12T19:41:21.347 に答える
0

いいえ、int次で定義されているように、基本型です。

3.9.1 基本型 [basic.fundamental]

2) 符号付き整数型には、「<code>signed char」、「<code>short int」、「<code>int」、「<code>long int」、「long long int」の 5 種類があります。このリストでは、各タイプは、リスト内の前のタイプと少なくとも同じ量のストレージを提供します。プレーンな int は、実行環境のアーキテクチャによって提案される自然なサイズを持ちます); その他の符号付き整数型は、特別なニーズを満たすために提供されています。

于 2012-10-12T19:45:42.073 に答える
0

いいえ、intビルトインタイプです。クラスではありません。コンパイラには、 を処理する方法に関する知識が組み込まれていintます。

于 2012-10-12T19:41:34.050 に答える