c – 编译器何时为类的特殊成员提供定义?
我知道当我定义一个空类并且根本不提供声明时,编译器将提供默认和复制构造函数,析构函数和复制赋值运算符的定义.
有什么规则?什么时候编译器不提供复制构造函数?移动构造函数和移动赋值运算符怎么样? (例如:如果我的类有一个类似int&的引用成员,编译器将不会为任何赋值运算符提供定义.否则会发生类似这样的事情?) 解决方法
编辑:在C 11中,它比隐式声明更复杂.它们可以是隐式声明和默认,隐式声明和删除,也可以是未声明的.阅读
this以区分后者2.以下信息并不完全正确,因为它不区分已声明和已删除与未声明.
以下是正在进行的工作. (?)表示我想澄清或量化该陈述. 特别会员职能§12/ 1 当用户没有显式声明它们时,实现将隐式声明某些类类型的这些成员函数: >默认构造函数 如果类型具有…,则不会隐式声明特殊成员函数. 默认构造函数§12.1/ 5 复制构造函数§12.8/ 8,§12.8/ 12 >用户声明的移动构造函数 *如果类具有用户声明的复制赋值运算符或用户声明的析构函数(?),则不推荐使用这种隐式声明 复制分配运算符§12.8/ 19,§12.8/ 24 >用户声明的移动构造函数 *如果类具有用户声明的复制构造函数或用户声明的析构函数(?),则不推荐使用此类隐式声明 移动构造函数§12.8/ 10,§12.8/ 12 >用户声明的复制构造函数 移动分配运算符§12.8/ 21,§12.8/ 24 >用户声明的复制构造函数 析构函数§12.4/ 4 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |