C++运算符重载
2021/8/5 20:35:59
本文主要是介绍C++运算符重载,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#include<iostream> #include<string> using namespace std; class book { public: book(){} book(string name,int num):name(name),num(num){} void print() { cout << this->name << ":" << this->num << endl; } //重载函数 friend book operator+(book object1, book object2); //类的成员函数的方式重载 //减法 book operator-(book object)//this:BOOK object:BO { return book(this->name, this->num - object.num); } string& get_name() { return name; } int& get_num() { return num; } protected: string name; int num; }; //友元重载 book operator+(book object1, book object2) { return book(object1.name+ object2.name, object1.num+ object2.num); } int main() { book BO("三国", 201); book BOOK("水浒传", 202); //重载函数隐式调用 book object = BO + BOOK; //所有重载实质都是函数调用 //重载函数的显式调用 //operator+解析为函数名 book novel = operator+(BO, BOOK);//需要两个参数是因为是在类外 book BOO = BOOK - BO; BOO.print(); object.print();//this代表object novel.print();//this代表novel book BOOK1 = BO.operator-(BOOK); BOOK1.print(); return 0; }
特殊运算符
#include<iostream> #include<string> using namespace std; class Num { public: Num(){} Num(int iNum=0):iNum(iNum){} Num operator++(int) //后置的++或者--需要加一个无效参数,eg:int { return Num(this->iNum++); } Num operator++() //前置的++ { return Num(++this->iNum); } void print() { cout << iNum << endl; } int& get_num() { return iNum; } protected: int iNum; }; int main() { Num a(1); Num b = a++;//a.operator++() b.print();//1 a.print();//2 Num d = ++a;//3 a.print();//3 d.print();//3 return 0; }
operator隐式转换
#include<iostream> using namespace std; class book { public: book(string name=" ",int num=0):name(name),num(num){} void print() { cout << name << "\t" << num << endl; } //operator 要转的类型() { return 返回相应类型的数据;}; operator int() { return this->num; } protected: string name; int num; }; int main() { book object("三国",201); object.print(); //赋值操作的隐式转换 int sum = object; cout << sum << endl; return 0; }
这篇关于C++运算符重载的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-26怎么使用nsenter命令进入容器?-icode9专业技术文章分享
- 2024-12-26导入文件提示存在乱码,请确定使用的是UTF-8编码怎么解决?-icode9专业技术文章分享
- 2024-12-26csv文件怎么设置编码?-icode9专业技术文章分享
- 2024-12-25TypeScript基础知识详解
- 2024-12-25安卓NDK 是什么?-icode9专业技术文章分享
- 2024-12-25caddy 可以定义日志到 文件吗?-icode9专业技术文章分享
- 2024-12-25wordfence如何设置密码规则?-icode9专业技术文章分享
- 2024-12-25有哪些方法可以实现 DLL 文件路径的管理?-icode9专业技术文章分享
- 2024-12-25错误信息 "At least one element in the source array could not be cast down to the destination array-icode9专业技术文章分享
- 2024-12-25'flutter' 不是内部或外部命令,也不是可运行的程序 或批处理文件。错误信息提示什么意思?-icode9专业技术文章分享