第一关:拷贝赋值运算符重载
/**
* 这是一个包装类(wrapper class),包装类在C++中有点小小的用处(基本上没用),在Java中的用处更大一些。
*/
#ifndef _INT_H_ //这是define guard
#define _INT_H_ //在C和C++中,头文件都应该有这玩意
class Int{
private://这是访问控制——私有的
int value; //这是数据成员,我们称Int是基本类型int的包装类,就是因为Int里面只有一个int类型的数据成员
public: //这是公有的
Int():value(0){}
Int(Int const&rhs):value(rhs.value){}
Int(int v):value(v){}
int getValue()const{return value;}
void setValue(int v){value=v;}
//拷贝赋值运算符重载
Int& operator = (const Int&rhs){
//在这里写具体实现,注意做自我赋值的检测
if(this!=&rhs)
{
value=rhs.value;
}
return *this;
}
};//记住这里有一个分号
#endif
第二关:其他赋值运算符重载
/**
* 这是一个包装类(wrapper class),包装类在C++中有点小小的用处(基本上没用),在Java中的用处更大一些。
*/
#ifndef _INT_H_ //这是define guard
#define _INT_H_ //在C和C++中,头文件都应该有这玩意
class Int{
private://这是访问控制——私有的
int value; //这是数据成员,我们称Int是基本类型int的包装类,就是因为Int里面只有一个int类型的数据成员
public: //这是公有的
Int():value(0){}
Int(Int const&rhs):value(rhs.value){}
int getValue()const{return value;}
void setValue(int v){value=v;}
//其他赋值运算符重载
Int& operator = (int rhs){
//在这里写具体实现
value=rhs;
}
};//记住这里有一个分号
#endif
第三关:算术复合赋值符运算符重载
/**
* 这是一个包装类(wrapper class),包装类在C++中有点小小的用处(基本上没用),在Java中的用处更大一些。
*/
#ifndef _INT_H_ //这是define guard
#define _INT_H_ //在C和C++中,头文件都应该有这玩意
class Int{
private://这是访问控制——私有的
int value; //这是数据成员,我们称Int是基本类型int的包装类,就是因为Int里面只有一个int类型的数据成员
public: //这是公有的
Int():value(0){}
Int(Int const&rhs):value(rhs.value){}
Int(int v):value(v){}
int getValue()const{return value;}
void setValue(int v){value=v;}
//算术复合赋值运算符运算符重载
Int& operator += (const Int&rhs){
//在这里实现算术复合赋值运算符
value+=rhs.value;
}
};//记住这里有一个分号
#endif
第四关:复用算术运算符重载复合赋值运算符
#include"Int.h"
Int& Int::operator = (const Int&rhs)
{
value=rhs.value;
}
Int& Int::operator += (const Int&rhs)
{
value+=rhs.value;
}
Int operator + (const Int&lhs,const Int&rhs)
{
Int m;
m.setValue(lhs.getValue()+rhs.getValue());
return m;
}
第五关:复用复合赋值运算符重载算术运算符
/********** BEGIN **********/
#include"Int.h"
Int& Int::operator = (const Int&rhs)
{
value=rhs.value;
}
Int& Int::operator += (const Int&rhs)
{
value+=rhs.value;
}
Int operator + (const Int&lhs,const Int&rhs)
{
Int m;
m.setValue(lhs.getValue()+rhs.getValue());
return m;
}
/********** END **********/