云购网站建设,SEO网站链接模型,那个网站卖做防水的烤枪,电脑培训网上免费课程类和对象#xff08;中#xff09;#xff08;二#xff09;1.赋值运算符重载1.1运算符重载1.2赋值运算符重载1.3前置和后置重载2.const成员3.取地址及const取地址操作符重载#x1f31f;#x1f31f;hello#xff0c;各位读者大大们你们好呀#x1f31f;#x1f31f;…
类和对象中二1.赋值运算符重载1.1运算符重载1.2赋值运算符重载1.3前置和后置重载2.const成员3.取地址及const取地址操作符重载hello各位读者大大们你们好呀 系列专栏【C的学习】 本篇内容运算符重载赋值运算符重载前置和后置重载const成员函数取地址及const取地址操作符重载 ⬆⬆⬆⬆上一篇类和对象(中)(一) 作者简介轩情吖请多多指教( •̀֊•́ ) ̖́- 1.赋值运算符重载
1.1运算符重载
C为了增强代码的可读性引入了运算符重载运算符重载是具有特殊函数名的函数也具有其返回值类型函数名字以及参数列表其返回值类型与参数列表与普通的函数类似。 函数名字为关键字operator后面接需要重载的运算符符号 函数原型返回值类型 operator操作符参数列表 注意 ①不能通过连接其他符号来创建新的操作符比如operator ②重载操作符必须有一个类类型参数
③用于内置类型的运算符其含义不能改变例如内置类型不能改变其含义 可以尝试一下调试这个他并不会去调用运算符重载 ④作为类成员函数重载时其形参看起来比操作数数目少1因为成员函数的第一个参数为隐藏的this ⑤.* :: sizeof ?: . 注意以上5个运算符不能重载
1.2赋值运算符重载
①赋值运算符格式 参数类型const T传递引用可以提高传参效率
返回值类型T返回引用可以提高返回的效率有返回值目的是为了支持连续赋值因为赋值符号在使用内置时可以连续赋值因此现在也要达到这个效果 返回*this是要复合连续赋值的含义保证运算符的特性 ②赋值运算符只能重载成类的成员函数不能重载成全局函数 原因赋值运算符如果不显式实现编译器会默认生成一个默认的。此时用户再在类外实现一个全局的赋值运算符重载就和编译器在类中生成的默认赋值运算符重载冲突了故赋值运算符重载只能是类的成员函数 ③用户没有显示实现时编译器会默认生成一个默认赋值运算符重载以值的方式逐字节拷贝 注意内置类型成员变量是直接赋值的而自定义类型成员变量需要调用对应类的赋值运算符重载完成赋值 可以看到把自己实现的赋值运算符重载注释掉了他依旧能完成赋值 注意如果类中未涉及到资源管理赋值运算符是否实现都可以一旦涉及到资源管理则必须实现就比如数组栈
1.3前置和后置重载
前置和后置都是一元运算符为了让前置和后置能够正确重载 C规定后置重载时多增加一个int类型的参数但调用函数时该参数不用传参编译器自动传递 –运算符也是一样的
2.const成员
将const修饰的“成员函数”称之为const成员函数const修饰类成员函数实际修饰该成员函数隐含的this指针表明在该成员函数中不能对类的任何成员修改 就像这个在成员函数内部不需要修改类的成员因此在函数头的后面加上const这是规定。 实际上就是这样的但是因为this指针是隐含的我们没办法对他直接进行修饰 但是在内部要对成员变量进行修改的就不能使用const
3.取地址及const取地址操作符重载
这两个默认成员函数一般不用重新定义编译器会默认生成 这两个运算符一般不需要重载使用编译器生成的默认取地址的重载即可只有特殊情况才需要重载比如想让别获取指定的内容 除非你恶搞这个操作符重载才需要你自己来定义哈哈哈哈就比如下面的代码 类和对象中二的知识大概就讲到这里啦博主后续会继续更新更多C的相关知识干货满满如果觉得博主写的还不错的话希望各位小伙伴不要吝啬手中的三连哦你们的支持是博主坚持创作的动力