❝Q_DISABLE_COPY宏作用是禁止对给定的类使用复制构造函数和赋值运算符。 ❞
Q_DISABLE_COPY作用
「Q_DISABLE_COPY宏作用是禁止对给定的类使用复制构造函数和赋值运算符。」 Q_DISABLE_COPY宏多使用在QObject类或其派生类中。如果我们需要禁止用户复制或赋值类对象,在类内使用Q_DISABLE_COPY宏即可。
如果某些类内有指针成员变量,那么在复制或赋值很容易时候就会出现浅拷贝问题,当「复制类」的指针成员变量被释放时,「原类」内的指针成员变量再次释放就会导致程序意向不到的后果(二次析构)。
Q_DISABLE_COPY宏源码
- Qt4版本
#define Q_DISABLE_COPY(Class)
Class(const Class &);
Class &operator=(const Class &);
- Qt5版本
#ifdef Q_COMPILER_DELETE_MEMBERS
# define Q_DECL_EQ_DELETE = delete
#else
# define Q_DECL_EQ_DELETE
#endif
#define Q_DISABLE_COPY(Class)
Class(const Class &) Q_DECL_EQ_DELETE;
Class &operator=(const Class &) Q_DECL_EQ_DELETE;