유니온은 사용자 정의 생성자가있는 클래스의 객체를 포함 할 수 있습니까? 내가 만들려고 할 때 그것은 "회원 'c :: aa'union 'c'의 사용자 정의 생성자 또는 비 단순한 기본 생성자가 있습니다."오류 메시지가 나타납니다. 표준 또는 내 코드에 오류가 있습니까?유니온은 사용자 정의 생성자가있는 클래스의 객체를 포함 할 수 있습니까?
내가 테스트 코드 ("구속되지 않은 조합")이 C++ 11 때문에 가능
class a
{
public:
int aaa;
a(){}
};
class b
{
public :
long bbb;
b() { }
};
union c
{
public :
c() {}
a aa;
b bb;
};
답변 해 주셔서 감사합니다. 학습 목적으로 수업을 사용했습니다. 클래스 객체를 사용하는 것은 나쁜 습관입니까 아니면 충돌/모호한 동작으로 이어질 수있는 문제입니까? – GAP
나는 그것을 나쁜 습관이라고 부르고 싶다. 명시 적으로 두 객체가 같은 메모리 공간을 공유하기를 원할 때만'union'을 사용하십시오.10 번 중 9 번, 거의 항상'struct'을 사용해야하며'union'을 사용해서는 안됩니다. –
어떤 상황에서 객체의 메모리 내에'this'가 저장되어 있습니까? –