在C语言中,运算符只能用于基本数据类型,例如,能够用==判断两个整数是否相等,但不能用于判断字符串是否相等,不能用于判断结构体,也不能用于判断类。程序员
在C++中,运算符的重载就是把运算符的符号赋予新的含义,若是类重载了 \== 运算符,那么就能够用\== 判断两个类是否相等。ide
operator是C++的一个关键字,它和运算符一块儿使用,表示一个运算符重载函数,在理解时可将operator和运算符(如operator==)视为类的一个成员函数名。函数
示例(book214.cpp)学习
/* * 程序名:book214.cpp,此程序用于演示C++运算符重载。 * 做者:C语言技术网(www.freecplus.net) 日期:20190525 */ #include <stdio.h> #include <string.h> class CGirl // 定义类 { public: char m_name[50]; // 姓名 char m_sc[30]; // 身材,火辣;普通;飞机场。 bool operator==(const CGirl &Girl) // 重载==运算符 }; int main() { CGirl Girl1,Girl2; strcpy(Girl1.m_name,"西施"); strcpy(Girl2.m_name,"东施"); if (Girl1 == Girl2) printf("Girl1和Girl2是同一我的。\n"); else printf("Girl1和Girl2不是同一我的。\n"); } bool CGirl::operator==(const CGirl &Girl) // 重载==运算符 { // 若是两个类的姓名相同,就相等 if (strcmp(m_name,Girl.m_name)== 0) return true; return false; }
CGirl类重载了\==运算符,定义了operator\==函数,用于判断两个对象是否相等,其实是判断两个对象的成员变量m_name是否相同,若是相同,对象就相等。.net
运行效果code
经过上述结果可以知道,由于操做符重载函数operator\==是CGirl类的一个成员函数,因此对象Girl一、Girl2均可以调用该函数。其中的 if (Gril1 \==Gril2) 语句,至关于对象Gril1调用函数operator\==,把对象Girl2做为一个参数传递给该函数,从而实现了两个对象的比较。对象
咱们把语句改成if (Gril1 != Gril2) ,会如何?编译以下:blog
编译没法经过,由于CGirl类并无重载!=运算符。图片
下一章节中将学习C++的string类,它重载了+、=、==、!=等运算符,对程序员来讲,确实感受有些方便。开发
在实际开发中,重载运算符有可能会模糊程序员的意图,若是要判断Girl1和Girl2的m_name成员是否相等,我更愿意用strcmp函数。
好久好久之前,学习了运算符重载的时候,能够把各类运算符重载成奇奇怪怪的功能,以为很好玩,后来就不玩了,感受没什么意思。
运算符重载还有不少其它的知识,我就不介绍了。
对CGirl重载!=操做符试试。
C语言技术网原创文章,转载请说明文章的来源、做者和原文的连接。
来源:C语言技术网(www.freecplus.net)
做者:码农有道
若是这篇文章对您有帮助,请点赞支持,或在您的博客中转发个人文章,谢谢!!!若是文章有错别字,或者内容有错误,或其余的建议和意见,请您留言指正,很是感谢!!!