C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++で空のクラスのサイズがゼロではないのはなぜですか?


C++に空のクラスが1つあるとします。次に、サイズが0かどうかを確認します。実際、標準ではサイズ0のオブジェクト(またはクラス)は許可されていません。これは、2つの異なるオブジェクトが同じメモリ位置を持つことが可能になるためです。これが、空のクラスでも少なくとも1のサイズが必要であるという概念の背後にある理由です。空のクラスのサイズはゼロではないことが知られています。通常は1バイトです。以下の例を参照してください。

理解を深めるために、次の実装を見てみましょう-

#include<iostream>
using namespace std;
class MyClass {
};
int main() {
   cout << sizeof(MyClass);
}

出力

1

これは、2つの異なるオブジェクトが異なるアドレスを持つことを保証するために、1つの空のクラスのオブジェクトが少なくとも1バイトかかることを明確に示しています。以下の例を参照してください。

#include<iostream>
using namespace std;
class MyClass {
};
int main() {
   MyClass a, b;
   if (&a == &b)
      cout <<"Same "<< endl;
   else
      cout <<"Not same "<< endl;
}

出力

Not same

動的割り当ての場合も、同じ理由で新しいキーワードは異なるアドレスを返します。

例(C ++)

#include<iostream>
using namespace std;
class MyClass {
};
int main() {
   MyClass *a = new MyClass();
   MyClass *b = new MyClass();
   if (a == b)
      cout <<"Same "<< endl;
   else
      cout <<"Not same "<< endl;
}

出力

Not same

  1. なぜC++が最高のプログラミング言語なのですか?

    C++は非常に強力な言語として知られています。 C ++を使用すると、コンピューターリソースの使用方法を細かく制御できるため、適切な方法で、リソースを安価に使用できる速度と機能は、他の言語を凌駕できるはずです。 C ++のパフォーマンスのおかげで、ゲームエンジン、ゲーム、デスクトップアプリの開発によく使用されます。多くのAAAタイトルのビデオゲームはC++で構築されています。 C ++の最大の強みは、C ++がいかにスケーラブルであるかということです。そのため、リソースを大量に消費するアプリは通常、C++を使用して構築されます。静的に型付けされた言語として、C ++は、コードが実行される前に

  2. コンストラクター名がJavaのクラス名と同じなのはなぜですか?

    すべてのクラスオブジェクトは同じ新しいキーワードを使用して作成されるため、オブジェクトを作成する必要のあるクラスに関する情報が含まれている必要があります。このため、コンストラクター名はクラス名と同じにする必要があります。 例 class MyConstructor{    public MyConstructor() {       System.out.println("The constructor name should be same as the class name");    }