C++-类的操作符(+)重写
使用const Complex operator + (const Complex &c ) const {} 重新定义类的+操作
#include<iostream> using namespace std; class Complex{ public: Complex(int r, int i):m_r(r),m_i(i){} void print(void){ cout << m_r << endl; cout << m_i << endl; } const Complex operator + (const Complex& c) const { Complex res(m_r + c.m_r, m_i + c.m_i); return res; } private: int m_r; int m_i; }; int main() { Complex c1(1, 2); Complex c2(2, 3); Complex c3 = c1 + c2; c3.print(); }
使用friend const Complex 来定义外函数
#include <iostream> #include <cstdio> using namespace std; class Complex{ public: Complex(int t, int r):m_r(r), m_t(t) {} void print(void) const { cout << m_r << "+" << m_t << endl; } //成员函数 //1)修饰返回结果,禁止对表达式再赋值 //2)常引用参数,支持常量型右操作数 //3)常函数,支持常量型左操作数 const Complex operator+(const Complex& c) const { Complex res(m_r + c.m_r, m_t + c.m_t); return res; } private: friend const Complex operator-(const Complex & l, const Complex &r); int m_r; int m_t; }; const Complex operator-(const Complex &l, const Complex &r){ Complex res(l.m_r - r.m_r, l.m_t - r.m_t); return res; } int main(void) { const Complex c1(1, 2); const Complex c2(2, 3); c1.print(); c2.print(); Complex c3 = c1 + c2; c3.print(); Complex c4 = c1 - c2; c4.print(); return 0; }
使用operator += 来定义 c1 += c2 函数
#include <iostream> using namespace std; class Complex { public: Complex(int r, int i):m_r(r), m_i(i){} void print(void) const { cout << m_r << "+" << m_i << endl; } Complex& operator +=(const Complex& c) { m_r += c.m_r; m_i += c.m_i; return *this; } friend Complex& operator -=(Complex& l, const Complex& r) { l.m_r -= r.m_r; l.m_i -= r.m_i; return l; } int m_r; int m_i; }; int main() { Complex c1(1, 2); Complex c2(2, 3); c1 += c2; c1.print(); c1 -= c2; c1.print(); }
每天更新pyQt5内容
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?