<QTypeInfo> 프록시 페이지

매크로

Q_DECLARE_TYPEINFO(Type, Flags)

매크로 문서

Q_DECLARE_TYPEINFO(Type, Flags)

이 매크로를 사용하여 사용자 정의 유형에 대한 정보를 지정할 수 있습니다 Type. 정확한 타입 정보가 있으면 Qt의 일반 컨테이너는 적절한 저장 방법과 알고리즘을 선택할 수 있습니다.

Flags 다음 중 하나가 될 수 있습니다:

  • Q_PRIMITIVE_TYPE Type 가 제대로 소멸되기 위해 어떤 연산도 수행할 필요가 없으며, 객체의 유효한 독립적인 복사본을 만들기 위해 memcpy()를 사용할 수 있음을 지정합니다.
  • Q_RELOCATABLE_TYPEType 에 생성자 및/또는 소멸자가 있지만 memcpy() 을 사용하여 메모리에서 재배치할 수 있음을 지정합니다.
  • Q_MOVABLE_TYPEQ_RELOCATABLE_TYPE 와 동일합니다. 새 코드에서는 Q_RELOCATABLE_TYPE 을 사용하는 것이 좋습니다. 참고: 이름과는 달리 이것은 생성자 이동이나 C++ 이동 의미론과는 아무런 관련이 없습니다.
  • Q_COMPLEX_TYPE (기본값)은 Type 에 생성자 및/또는 소멸자가 있으며 메모리에서 이동할 수 없음을 지정합니다.

"프리미티브" 타입의 예시:

struct Point2D
{
    int x;
    int y;
};

Q_DECLARE_TYPEINFO(Point2D, Q_PRIMITIVE_TYPE);

비-POD "프리미티브" 타입의 예는 QUuid 입니다: QUuid 에는 생성자가 있지만(따라서 POD가 아님), 모든 비트 패턴은 여전히 유효한 객체를 나타내며, memcpy()를 사용하여 QUuid 객체의 유효한 독립 복사본을 만들 수 있습니다.

재배치 가능한 타입의 예:

class Point2D
{
public:
    Point2D() { data = new int[2]; }
    Point2D(const Point2D &other) { ... }
    ~Point2D() { delete[] data; }

    Point2D &operator=(const Point2D &other) { ... }

    int x() const { return data[0]; }
    int y() const { return data[1]; }

private:
    int *data;
};

Q_DECLARE_TYPEINFO(Point2D, Q_RELOCATABLE_TYPE);

Qt는 표준 C++ 타입 특성을 사용하여 타입의 클래스를 감지하려고 시도합니다; 이 매크로를 사용하여 동작을 조정할 수 있습니다. 예를 들어 많은 유형이 복사 가능하지 않음에도 불구하고 Q_RELOCATABLE_TYPE의 후보가 될 수 있습니다.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.