首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Q_DISABLE_COPY宏

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;

关于更多

请查看往期Qt君公众号文章《翻译 | 为什么QObject子类不可复制?》。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200518A0QWUW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券