<QtClassHelperMacros> 프록시 페이지
매크로
Q_DISABLE_COPY(Class) | |
Q_DISABLE_COPY_MOVE(Class) |
매크로 문서
Q_DISABLE_COPY(Class)
주어진 Class 에 대한 복사 생성자 및 할당 연산자 사용을 비활성화합니다.
QObject 의 서브클래스의 인스턴스는 복사하거나 할당할 수 있는 값으로 생각하지 말고 고유한 ID로 생각해야 합니다. 즉, QObject (디렉터 또는 간접)의 자체 서브클래스를 만들 때 복사 생성자나 할당 연산자를 제공해서는 안 됩니다. 그러나 실수로 복사 생성자나 할당 연산자가 필요한 코드를 작성하는 경우(쉽게 할 수 있습니다) 컴파일러가 신중하게 생성하기 때문에 단순히 클래스에서 이를 생략하는 것만으로는 충분하지 않을 수 있습니다. 더 많은 작업을 해야 합니다.
호기심 많은 사용자라면 QObject 에서 파생된 Qt 클래스가 일반적으로 이 매크로를 비공개 섹션에 포함하는 것을 보셨을 것입니다:
class MyClass : public QObject { private: Q_DISABLE_COPY(MyClass) };
이 매크로는 비공개 섹션에 복사 생성자와 할당 연산자를 선언하므로 실수로 사용하면 컴파일러가 오류를 보고합니다.
class MyClass : public QObject { private: MyClass(const MyClass &) = delete; MyClass &operator=(const MyClass &) = delete; };
하지만 이마저도 모든 경우를 완벽하게 잡아내지는 못합니다. 이런 경우에는 다음과 같은 방법을 사용할 수 있습니다:
우선 그렇게 하지 마세요. 대부분의 컴파일러는 복사 생성자를 사용하는 코드를 생성하므로 개인정보 침해 오류가 보고되지만, C++ 컴파일러가 이 문에 대한 코드를 특정 방식으로 생성할 필요는 없습니다. 복사 생성자나 비공개로 설정한 할당 연산자를 사용하지 않고 코드를 생성할 수도 있습니다. 이 경우 오류는 보고되지 않지만 w
의 멤버 함수를 호출할 때 애플리케이션이 충돌할 수 있습니다.
Q_DISABLE_COPY_MOVE 를참조하세요 .
Q_DISABLE_COPY_MOVE(Class)
주어진 Class 에 대해 복사 생성자, 할당 연산자, 이동 생성자 및 이동 할당 연산자의 사용을 비활성화하는 편의 매크로입니다.
Q_DISABLE_COPY도 참조하세요 .
© 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.