C++类和对象的学习四——(下篇)

本文介绍了C++中拷贝构造函数的使用场景,强调了不涉及资源管理时通常不需要自定义。接着详细阐述了操作符重载的规则,包括如何在类内和类外定义,关键字`operator`的使用,以及前置和后置自增运算符的区别。还提到了`const`修饰的`this`指针,以及重载函数的返回值和参数设定。最后讨论了操作符重载的查找顺序,并建议一般将其定义在类域内以避免访问问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.拷贝函数如果不涉及到资源管理,一般是在堆的资源,就不需要自己写。

2.操作符号重载:
1.使用对象:自定义类,通过函数的方式来自己给出新的操作符的意义

2.不能于原操作符相违背,加法的含义不能变为减法;

3.关键字是operator ,函数名是operator+ 操作符号,有几个操作数就几个形参,

前置加加和后置加加的区别就是参数是否带整形。需要注意的是在类里面定义oprator

参数天热自带一个this指针,所以如果有俩个操作数,函数形参里面就只写一个。

4.this 指针前面有 const修饰,完整的修饰是date const *this.

5.operator 函数的返回值于操作符号本身意义有关,运算结果是什么就返回什么,返回本神还是临时变量就看操作符号的具体意义

6.编译器会首先在全局检索这个操作符有没有重载,再去域里面找,同一个操作符重载,全局的形参比自定义类里面的形参多一个。

7.编译器的翻译:

bool operator>(const Date & x);//在类域里面定义前面还有一个 Date const * this参数

在函数中调用时 
Date x;
Date y;
x > y 会被翻译成:x.operator>(y);
而在全局定义需要这样定义
bool operator>(const Date &X,const Date & y)
x>y就会被翻译成operator>(x,y);

一般将操作符重载定义在类域里面这样就不会导致在类外无法访问成员的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值