C++之重载操作符
1.類中重載+操作符
#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std;class Object { public:Object(){}Object(int a){num = a;}Object operator + (const Object& a) //重載+操作符;{Object result;result.num = num + a.num;return result;} private:int num; };int main(int argc, char * argv[]) {int a = 10;int b = 20;Object obja(a);Object objb(b);Object objc = obja + objb;system("pause");return 0; }?
2.重載全局操作符
#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std;class Object { friend Object operator + (const Object &a, const Object &b); public:Object(){}Object(int a){num = a;}private:int num; };Object operator + (const Object &a, const Object &b) {Object result;result.num = a.num + b.num;return result; }int main(int argc, char * argv[]) {Object obja(10);Object objb(20);Object objc = obja + objb;system("pause");return 0; }
全局操作符,主要注意的是,當重載操作符訪問私有成員時,需要將操作符聲明為友元;
4. 重載[] 操作符
#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std;class Object { public:Object(){}Object(char * str){int size = strlen(str);m_buf = new char[size];strcpy(m_buf,str);}char& operator [] (int index){return m_buf[index];}~Object(){delete[] m_buf;}private:char *m_buf; };int main(int argc, char * argv[]) {Object obja("weiyouqing");char str = obja[0];obja[0] = 'W';system("pause");return 0; }5.重載==操作符
#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std;class Object { public:Object(){}Object(int a){num = a;}bool operator == (const Object &other){if (num == other.num)return true;elsereturn false;}~Object(){}private:int num; };int main(int argc, char * argv[]) {Object obja(2);Object objb(0);if (obja == objb)cout << "equal" << endl;elsecout << "not equal" << endl;system("pause");return 0; }全局重載操作符:
#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std;class Object {friend bool operator == (const Object &a, const Object &b); public:Object(){}Object(int a){num = a;}~Object(){}private:int num; };bool operator == (const Object &a,const Object &b) {if (a.num == b.num)return true;elsereturn false; }int main(int argc, char * argv[]) {Object obja(2);Object objb(0);if (obja == objb)cout << "equal" << endl;elsecout << "not equal" << endl;system("pause");return 0; }?
轉載于:https://www.cnblogs.com/weiyouqing/p/9657465.html
總結
- 上一篇: Solr安装(单机版)
- 下一篇: 日常小记