C++ 运算符重载
类头文件
#ifndef _FY_STUDENT_H_
#define _FY_STUDENT_H_
class Student
{
public:
Student();
Student(int grade);
~Student();
int GetGrade() const;
void SetGrade(int grade);
private:
int _grade;
};
#endif // _FY_STUDENT_H_
类 cpp 文件
#include "Student.h"
Student::Student()
{
}
Student::Student(int grade) : _grade(grade)
{
}
Student::~Student()
{
}
int Student::GetGrade() const
{
return _grade;
}
void Student::SetGrade(int grade)
{
_grade = grade;
}
成员函数实现重载
// 头文件添加
Student operator+(const Student & t1)
{
Student tmp;
tmp.SetGrade(this->_grade + t1.GetGrade());
return tmp;
}
全局函数实现重载
// 头文件添加 友元类及函数声明
friend Student;
bool operator>(const Student &p2);
// cpp 文件添加函数实现
bool Student::operator>(const Student & p2)
{
return this->GetGrade() > p2.GetGrade();
}
注意
函数参数使用 const
+ &
const
是为了防止函数内部更改传入对象数据&
为了节省时间Typename func(T1, T2) cosnt;
此const
是为了防止func
内部修改变量
使用此种方式时,函数内部若要调用传入对象的方法,应把方法声明为
const
类型。见注意(3)