반응형
💡[[no_unique_address]] 란
"[[no_unique_address]]"는 C++20부터 추가된 attribute로 "Empty Class 타입의 멤버를 가질 때 독립적인 주소를 가질 필요 없다."는 의미를 가진다. Empty Class를 멤버변수를 가지고 있어도 크기에 포함되지 않는다.
앞서 살펴 보았던 EBCO와 결과가 같은 것을 볼 수 있다.
📝예시 코드
예시 코드를 보면 [[no_unique_address]] 속성을 붙인 Empty Class의 크기가 없으며 data와 동일한 주소를 가지고 있는것을 볼 수 있다.
#include <iostream>
class Empty {};
class TestClass {
[[no_unique_address]] Empty e;
int data;
};
int main() {
TestClass tc;
std::cout << sizeof(TestClass) << std::endl; // 4 byte
std::cout << &tc.e << std::endl; // 동일한 주소
std::cout << &tc.data << std::endl; // 동일한 주소
return 0;
}
반응형
'개발 > C++' 카테고리의 다른 글
[C++] EBCO란? (0) | 2021.10.08 |
---|---|
[C++]Tag Dispatching(꼬리표 분배)이란?-Empty Class 이용한 예(example) (0) | 2021.10.08 |
[C++] Empty Class란? (0) | 2021.10.08 |