it编程 > 编程语言 > C/C++

C++类和对象之运算符重载解读

22人参与 2025-05-22 C/C++

c++ 运算符重载

一、什么是运算符重载?

运算符重载是 c++ 的一种特性,它允许程序员为自定义类型(如类和结构体)重新定义运算符的行为。通过运算符重载,我们可以使用熟悉的运算符语法来操作自定义类型的对象,从而使代码更加简洁、直观。

当运算符被⽤于类类型的对象时,c++语⾔允许我们通过运算符重载的形式指定新的含义。c++规定类类型对象使⽤运算符时,必须转换成调⽤对应运算符重载,若没有对应的运算符重载,则会编译报错。

例如,我们可以为自定义的复数类重载 + 运算符,使得两个复数对象可以直接使用 + 进行相加:

complex a(1, 2);
complex b(3, 4);
complex c = a + b; // 使用重载的 + 运算符

二、运算符重载的语法规则

在 c++ 中,运算符重载通过定义特殊的成员函数或非成员函数来实现。

其基本语法如下:

返回类型 operator运算符(参数列表) {
    // 函数体
}

其中:

注意:

重载<<和>>时,需要重载为全局函数,因为重载为成员函数,this指针默认抢占了第⼀个形参位置,第⼀个形参位置是左侧运算对象,调⽤时就变成了 对象<<cout,不符合使⽤习惯和可读性。

重载为全局函数把ostream/istream放到第⼀个形参位置就可以了,第⼆个形参位置当类类型对象。

成员函数重载

运算符重载函数可以作为类的成员函数来定义。在这种情况下,函数的参数个数比运算符的操作数少一个,因为第一个操作数是通过 this 指针隐式传递的。

非成员函数重载

运算符重载函数也可以作为非成员函数(全局函数或友元函数)来定义。

在这种情况下,函数的参数个数与运算符的操作数相同。

赋值运算符重载

赋值运算符重载是⼀个默认成员函数,⽤于完成两个已经存在的对象直接的拷⻉赋值,这⾥要注意跟拷⻉构造区分,拷⻉构造⽤于⼀个对象拷⻉初始化给另⼀个要创建的对象。

赋值运算符重载的特点:

拷贝构造:一个存在的对象去初始化另一个要实例化的对象; 赋值重载:已存在的两个对象之间的拷贝,注意返回值为类类型,处理连续赋值的情况

取地址运算符重载

const成员函数

取地址运算符重载

三、可重载的运算符和不可重载的运算符

可重载的运算符

c++ 中大部分运算符都可以被重载,包括:

不可重载的运算符

c++ 中少数运算符不能被重载,包括:

五、运算符重载的注意事项

在使用运算符重载时,需要注意以下几点:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

您想发表意见!!点此发布评论

推荐阅读

C++类和对象之相关特性解读

05-22

C++中的set有序且唯一的集合方式

05-22

C++ HTTP框架推荐(特点及优势)

05-23

Qt之QMessageBox的具体使用

05-20

Qt中Qfile类的使用

05-20

PyQt5 QDate类的具体使用

05-19

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论