Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 빈 클래스의 크기가 0이 아닌 이유는 무엇입니까?


C++에 하나의 빈 클래스가 있다고 가정합니다. 이제 크기가 0인지 여부를 확인하겠습니다. 실제로, 표준은 크기가 0인 객체(또는 클래스)를 허용하지 않습니다. 이는 두 개의 개별 객체가 동일한 메모리 위치를 가질 수 있기 때문입니다. 이것이 빈 클래스라도 크기가 1 이상이어야 한다는 개념의 배경이 되는 이유입니다. 빈 클래스의 크기는 0이 아닌 것으로 알려져 있습니다. 일반적으로 1바이트입니다. 아래 예를 참조하십시오.

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

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

출력

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