C++中如何将operator==定义为类的成员函数
作者:久许
这篇文章主要介绍了C++中如何将operator==定义为类的成员函数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
C++将operator==定义为类的成员函数
Duree.h
#ifndef _DUREE_H #define _DUREE_H class Duree{ public: Duree(int heures = 0,int minutes = 0,int secondes = 0); bool estEgal(Duree const &b)const; bool operator==(Duree const& other);//如果把operator==作为类的成员函数,那么只需要一个参数就够了 private: int m_heures; int m_minutes; int m_secondes; }; #endif
Duree.cpp
#include<iostream> #include "Duree.h" using namespace std; Duree::Duree(int heures,int minutes,int secondes):m_heures(heures),m_minutes(minutes),m_secondes(secondes){ cout<<m_heures<<" "<<m_minutes<<" "<<m_secondes<<endl; } bool Duree::estEgal(Duree const& other)const{ return (m_heures==other.m_heures && m_minutes == other.m_minutes && m_secondes == other.m_secondes); } bool Duree::operator==(Duree const& other){ return estEgal(other); }
Duree_Main.cpp
#include<iostream> #include "Duree.h" using namespace std; int main(){ Duree first(10,10,10),second(15,20); if(first == second) cout<< "Les durees sont identiques"<<endl; else cout<< "Les durees sont differents"<<endl; return 0; }
编译运行
参考
https://stackoverflow.com/questions/23162870/c-bool-operator
C++对operator=进行重写
/************************************************************************* > File Name: copy1.cpp > Author: > Mail: > Created Time: 2020年06月17日 星期三 15时36分57秒 ************************************************************************/ #include<iostream> using namespace std; class Example{ std::string* ptr; public: Example():ptr(new std::string){}//new std::string返回的值是存储字符串的地址 Example(const std::string& str):ptr(new std::string(str)){} Example(const Example& example):ptr(new std::string(example.content())){}; ~Example(){delete ptr;} const std::string& content()const{return *ptr;} Example& operator= (const Example& x){ cout<<"执行了"<<endl; delete ptr;//释放指针指向的字符串占用的内存 ptr = new string(x.content()); return *this; } Example operator+(const Example & rhs){ return Example(content()+rhs.content()); } void print_information()const{ cout<< *ptr<<endl; } }; int main(){ Example bar1("hello"); bar1.print_information(); Example bar2("world"); bar2.print_information(); Example bar3 = Example(bar1); bar3.print_information(); Example bar4 = bar2; bar4.print_information(); Example foo("Exam"); Example ba = Example("ple"); foo = foo + ba; cout<<"foo's content:"<<foo.content()<<endl; return 0; }
编译执行
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。