C++类的六个默认成员函数(下篇)-创新互联
目录
目前累计服务客户1000+,积累了丰富的产品开发及服务经验。以网站设计水平和技术实力,树立企业形象,为客户提供网站制作、成都网站制作、网站策划、网页设计、网络营销、VI设计、网站改版、漏洞修补等服务。创新互联建站始终以务实、诚信为根本,不断创新和提高建站品质,通过对领先技术的掌握、对创意设计的研究、对客户形象的视觉传递、对应用系统的结合,为客户提供更好的一站式互联网解决方案,携手广大客户,共同发展进步。一:拷贝构造函数
二:运算符重载
1.赋值运算符重载
1.1 赋值运算符重载格式
1.2 赋值运算符只能重载成类的成员函数不能重载成全局函数
1.3.用户没有显式实现时,编译器会生成一个默认赋值运算符重载,以值的方式逐字节拷贝。
三.const成员
一:拷贝构造函数 定义:只有单个形参 ,该形参是对本 类类型对象的引用 ( 一般常用 const 修饰 ) ,在用 已存 在的类类型对象创建新对象时由编译器自动调用 。
总结:需要写析构函数的类,都需要写深拷贝。 不需要写析构函数的类,默认拷贝就可以 注:为了提高程序效率,一般对象传参时,尽量使用引用类型,返回时根据实际场景,能用引用 尽量使用引用。 二:运算符重载 函数名字为:关键字 operator 后面接需要重载的运算符符号 。 函数原型: 返回值类型 operator 操作符 ( 参数列表 ) 注意:特征:
1.它是构造函数得一个重载形式2.参数只有一个且必须是类类型对象的引用,使用传值方式编译器直接报错,因为会引发无穷递归调用。
3. 若未显式定义,编译器会生成默认的拷贝构造函数。 默认的拷贝构造函数对象按内存存储按 字节序完成拷贝,这种拷贝叫做浅拷贝,或者值拷贝。
(注意:在编译器生成的默认拷贝构造函数中,内置类型是按照字节方式直接拷贝的,而自定 义类型是调用其拷贝构造函数完成拷贝的。)
不能通过连接其他符号来创建新的操作符:比如 operator@ 重载操作符必须有一个类类型参数 用于内置类型的运算符,其含义不能改变,例如:内置的整型 + ,不 能改变其含义 作为类成员函数重载时,其形参看起来比操作数数目少 1 ,因为成员函数的第一个参数为隐 藏的 this.* :: sizeof ?: . 注意以上5个运算符不能重载。 1.赋值运算符重载
1.1 赋值运算符重载格式 参数类型 : const T& ,传递引用可以提高传参效率 返回值类型 : T& ,返回引用可以提高返回的效率,有返回值目的是为了支持连续赋值 检测是否自己给自己赋值 返回 *this :要复合连续赋值的含义
1.2 赋值运算符只能重载成类的成员函数不能重载成全局函数 原因:赋值运算符如果不显式实现,编译器会生成一个默认的。此时用户再在类外自己实现 一个全局的赋值运算符重载,就和编译器在类中生成的默认赋值运算符重载冲突了,故赋值 运算符重载只能是类的成员函数。
1.3.用户没有显式实现时,编译器会生成一个默认赋值运算符重载,以值的方式逐字节拷贝。 注意:内置类型成员变量是直接赋值的,而自定义类型成员变量需要调用对应类的赋值运算符 重载完成赋值。
三.const成员 将 const 修饰的 “ 成员函数 ” 称之为 const 成员函数 , const 修饰类成员函数,实际修饰该成员函数 隐含的 this 指针 ,表明在该成员函数中 不能对类的任何成员进行修改。
四.取地址及const取地址操作符重载 这两个默认成员函数一般不用重新定义 ,编译器默认会生成。 这两个运算符一般不需要重载,使用编译器生成的默认取地址的重载即可,只有特殊情况,才需要重载,比如想让别人获取到指定的内容!由于疫情原因,更新间隔时间较长!!!
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
本文题目:C++类的六个默认成员函数(下篇)-创新互联
链接分享:http://scyanting.com/article/iiisp.html