2

ですか?int_class

以下のコードを検討してください

#include"iostream"

using namespace std;

class test{
public:
    int a;

    test(int x)
    {
        cout<<"In test Constructor"<<endl;
        a = x;
    }
};

int main()
{
    test *obj = new test(10);// Constructor get called 
int *x = new int(10);    // Expecting the same if "int" is a class
return 0;
}
4

4 に答える 4

4

いいえ、 ではintなく、class有効int x = new int(10);な C++ 構文ではありません。

int* x = new int(5);
...
...
delete x;

これは へのポインタを作成するだけで、ポインタを初期化する方法ですintnew int(5)

正しい方法は delete[] x; です。

newいいえ、ではなくで割り当てたからですnew[]。ただし、正しい方法はint x = 5;or int x(5);- 本当に必要な場合を除き、動的割り当てを避けることです。

于 2013-01-17T11:44:43.393 に答える
1
Is int a class in c++?

いいえint。継承できないため、そのスコープ内で関数を定義できず、クラスが持つ必要がある非常に多くのプロパティが不足しています。

私たちが言うなら: int *x = new int(5);int のコンストラクターを呼び出しますか?

で新しい整数を初期化し5ます。少なくともコンストラクターの効果が得られます。しかし、ペダン的に言うと、コンストラクターは呼び出されません。new int[10]コンストラクターを呼び出さず、10int の値が実装定義の場合。ただしnew int[10]()、値は 10 個の整数すべてに初期化 (つまり 0) されます。

そして正しい方法は delete[] x

いいえ。どのデータ型でも正しい組み合わせはmalloc()/free()new/deletenew[]/delete[]およびnew(<placement>) T/ ~T()です。残りはすべて未定義の動作です。

于 2013-01-17T11:49:11.713 に答える
0

intfloatcharすべてclasscpp の a ではありません。
次のように入力することはできません
int x=new int(10);

:
Class x=new Class(10);

Class x=new Class(10);//"new " not "new ...[]"because,
                       // It is just a single object not array.
...
delete x;//Not delete[] x;because x is not array

intあなたの期待は正しいですが、クラスがある場合のみですが、そうではありません

于 2013-01-17T11:52:12.593 に答える
0

いいえ、C++ の基本型 ( charintlong、など) はクラスではありませんfloatdouble

ただし、言語はその違いをほとんど無視できるように設計されています。最も重要な違いは次のとおりです。

  • 基本型はメンバーを持つことができません。クラスはできます(通常はそうします)。
  • 基本型は基本クラスとして指定できません。
于 2013-01-17T13:11:20.633 に答える