c++ union 예제

union-test.cpp:13: 오류: 멤버 `DataElement ::de` 생성자가 공용 구조체와 공용 구조체에서 허용되지 않는 구조체와 공용 구조체는 서로 다른 데이터 형식의 수집입니다. 단일 단위에서 서로 다른 형식의 변수 수를 그룹화하는 데 사용됩니다. “벌거 벗은” 공용 구조체는 기본 형식을 추적해야 하기 때문에 오류가 발생하기 쉽습니다. 공용 구조체에 비정적 특수 멤버 함수(복사/이동 생성자, 복사/이동 할당 또는 소멸자)가 포함된 경우 해당 함수는 기본적으로 공용 구조체에서 삭제되며 프로그래머가 명시적으로 정의해야 합니다. 예를 들어 색상 데이터를 4개의 8비트 서명되지 않은 문자 번호로 저장해야 합니다. 동시에 이 색상 데이터를 32비트 서명되지 않은 정수 하나로 저장해야 합니다. Union을 사용하면 동일한 컴퓨터 메모리 블록을 사용하여 두 표현(서명되지 않은 char 4개 및 서명되지 않은 정수 가 있는 구조체)을 동시에 사용할 수 있습니다. 익명 공용 구조로 선언된 이름은 비멤버 변수와 같이 직접 사용됩니다. 따라서 익명 공용 구조에 선언된 이름은 주변 범위에서 고유해야 합니다. 이 오류 의 원인을 극복하려면 태그가 지정된 공용 구조호를 사용해야 합니다. 공용 구조조는 기본 클래스를 가질 수 없으며 기본 클래스로 사용할 수 없습니다.

1. 구조의 선언 및 초기화는 구조체 키워드로 시작합니다. 노조선언과 초기화는 조합 키워드로 시작한다. 이 구성표는 개체 지향 C++의 다형성 및 상속 기능으로 구성될 수도 있지만 설정이 이 방식보다 덜 효율적이며 구성이 수반됩니다. 노조의 사용은 유형 안전을 잃지만 성능이 향상됩니다. 이 것의 요점은 무엇입니까? 공용 구조체는 동일한 메모리 위치를 보는 여러 가지 방법을 제공하므로 메모리를 보다 효율적으로 사용할 수 있습니다. 공용 구조체의 사용의 대부분은 C++의 개체 지향 기능으로 덮여 있으므로 C에서 더 일반적입니다. 그러나 성능이 중요하거나 해당 항목이 확장되지 않는다는 것을 알고 있을 때 개체 지향 프로그래밍의 형식을 피하는 것이 편리한 경우도 있습니다. 처음에는 유형 펀칭이란 무엇입니까? 형식 펀닝은 형식 시스템을 의도적으로 전복하여 형식을 다른 유형으로 취급하는 프로그래밍 언어의 가능성입니다. C++에서 유형 펀닝을 수행하는 일반적인 방법 중 하나는 작성된 공용 구조체와 다른 형식의 공용 구조체의 멤버를 읽는 것입니다. C++ 컴파일러는 C 데이터 구조를 C++ 클래스처럼 처리합니다.

이렇게 하면 C++ 컴파일러를 사용할 때 “구조체”가 있는 C++ 구문들을 사용할 수 있습니다. 생성자가 있는 “C” 조합의 경우도 마찬가지입니다. 설명과 팁이 있는 샘플 코드 예제에 대해 설명합니다. 모든 예제에서는 Linux에서 GNU g++ 컴파일러(4.6.3)를 사용합니다.

Sorry, comments are closed for this post.