全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

c++ 运算符重载代码 c++ operator重载实例

运算符重载允许为类类型定义运算符行为,如复数类中重载+和

在C++中,运算符重载允许我们为自定义类型(如类)赋予标准运算符新的行为。通过重载,可以让对象像基本数据类型一样使用+、-、==等操作符,提升代码可读性和易用性。

什么是运算符重载

运算符重载是函数重载的一种形式,它使我们能重新定义已有运算符对类对象的操作方式。例如,两个复数对象可以通过+直接相加,而不是调用add()函数。

基本规则和限制

不是所有运算符都能被重载,比如 ::(作用域解析)、.(成员访问)、.*?:sizeof 不能重载。重载后的运算符不能改变优先级或结合性。

  • 可以作为类的成员函数或全局函数重载
  • 至少有一个操作数必须是用户自定义类型
  • 重载函数应保持自然语义,避免滥用

实例:复数类的加法与输出重载

下面是一个完整的例子,展示如何重载 + 和

#include 
using namespace std;

class Complex { private: double real, imag; public: Complex(double r = 0, double i = 0) : real(r), imag(i) {}

// 成员函数重载加法(也可用友元或全局函数)
Complex operator+(const Complex& other) const {
    return Complex(real + other.real, imag + other.imag);
}

// 友元函数重载输出流,访问私有成员
friend ostream& operatorzuojiankuohaophpcnzuojiankuohaophpcn(ostream& os, const Complex& c) {
    os zuojiankuohaophpcnzuojiankuohaophpcn c.real zuojiankuohaophpcnzuojiankuohaophpcn (c.imag youjiankuohaophpcn= 0 ? " + " : " - ") zuojiankuohaophpcnzuojiankuohaophpcn abs(c.imag) zuojiankuohaophpcnzuojiankuohaophpcn "i";
    return os;
}

};

int main() { Complex c1(3, 4); Complex c2(1, -2); Complex c3 = c1 + c2;

cout zuojiankuohaophpcnzuojiankuohaophpcn "c1 = " zuojiankuohaophpcnzuojiankuohaophpcn c1 zuojiankuohaophpcnzuojiankuohaophpcn endl;
cout zuojiankuohaophpcnzuojiankuohaophpcn "c2 = " zuojiankuohaophpcnzuojiankuohaophpcn c2 zuojiankuohaophpcnzuojiankuohaophpcn endl;
cout zuojiankuohaophpcnzuojiankuohaophpcn "c1 + c2 = " zuojiankuohaophpcnzuojiankuohaophpcn c3 zuojiankuohaophpcnzuojiankuohaophpcn endl;

return 0;

}

输出结果:

c1 = 3 + 4i
c2 = 1 - 2i
c1 + c2 = 4 + 2i

重载赋值运算符 =

当类涉及动态资源管理时,必须自定义赋值运算符以防止浅拷贝问题:

class String {
private:
    char* data;
public:
    String(const char* str = nullptr) {
        if (str) {
            data = new char[strlen(str)+1];
            strcpy(data, str);
        } else {
            data = new char[1];
            data[0] = '\0';
        }
    }
// 赋值运算符重载
String& operator=(const String& other) {
    if (this == &other) return *this;  // 自赋值检查

    delete[] data;  // 释放原内存
    data = new char[strlen(other.data)+1];
    strcpy(data, other.data);

    return *this;  // 支持链式赋值 a = b = c
}

~String() {
    delete[] data;
}

friend ostream& operatorzuojiankuohaophpcnzuojiankuohaophpcn(ostream& os, const String& s) {
    os zuojiankuohaophpcnzuojiankuohaophpcn s.data;
    return os;
}

};

重载下标运算符 []

常用于实现安全的数组类访问:

class IntArray {
private:
    int* arr;
    int size;
public:
    IntArray(int s) : size(s) {
        arr = new int[size];
    }
// 重载[],支持读写
int& operator[](int index) {
    if (index zuojiankuohaophpcn 0 || index youjiankuohaophpcn= size) {
        throw out_of_range("Index out of bounds");
    }
    return arr[index];
}

~IntArray() { delete[] arr; }

};

使用示例:

IntArray a(5);
a[0] = 10;
cout

基本上就这些常见用法。掌握运算符重载能让自定义类型更直观、更接近内置类型的行为,但要合理使用,避免造成误解。


# c++  # 作用域  # 代码可读性  # 数据类型  # 运算符  # 成员函数  # 重载运算符  # 重载函数  # 函数重载  # 运算符重载  # operator  # 对象  # 自定义  # 链式  # 用友  # 是一个  # 都能  # 已有  # 也可  # 可以通过  # 能让 


相关文章: 如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  C#如何在一个XML文件中查找并替换文本内容  如何在IIS中配置站点IP、端口及主机头?  高防服务器:AI智能防御DDoS攻击与数据安全保障  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  做企业网站制作流程,企业网站制作基本流程有哪些?  如何在服务器上三步完成建站并提升流量?  湖州网站制作公司有哪些,浙江中蓝新能源公司官网?  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  PHP 500报错的快速解决方法  深圳网站制作案例,网页的相关名词有哪些?  如何快速生成专业多端适配建站电话?  淘宝制作网站有哪些,淘宝网官网主页?  郑州企业网站制作公司,郑州招聘网站有哪些?  如何自定义建站之星网站的导航菜单样式?  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  如何制作网站标识牌,动态网站如何制作(教程)?  七夕网站制作视频,七夕大促活动怎么报名?  建站之星如何实现PC+手机+微信网站五合一建站?  建站之星代理如何获取技术支持?  javascript基本数据类型及类型检测常用方法小结  如何通过FTP服务器快速搭建网站?  如何在云指建站中生成FTP站点?  建站之星安装失败:服务器环境不兼容?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  建站与域名管理如何高效结合?  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  建站之星如何快速生成多端适配网站?  如何用PHP工具快速搭建高效网站?  制作企业网站建设方案,怎样建设一个公司网站?  上海网站制作开发公司,上海买房比较好的网站有哪些?  建站VPS配置与SEO优化指南:关键词排名提升策略  如何快速搭建个人网站并优化SEO?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  定制建站哪家更专业可靠?推荐榜单揭晓  如何在Windows虚拟主机上快速搭建网站?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  如何选择域名并搭建高效网站?  用v-html解决Vue.js渲染中html标签不被解析的问题  网站制作需要会哪些技术,建立一个网站要花费多少?  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  大连 网站制作,大连天途有线官网?  如何高效配置IIS服务器搭建网站?  网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  制作网页的网站有哪些,电脑上怎么做网页?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  如何选择高效便捷的WAP商城建站系统?  如何批量查询域名的建站时间记录? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。