通过修改运算符的参数为整数类型,可以实现CBook对象与整数相加。
对于两个整型变量的相加,可以调换加数和被加数的顺序,因为加法符合交换律。但是对于通过重载运算符实现的加法,不可以交换顺序。
illegal:
Book2=10+Book1;//非法代码
对于++和--运算符,由于涉及前置运算和后置运算,在重载这类运算符时如何区分呢?默认情况是,如果重载运算符没有参数则表示是前置运算,例如:
void operator++()//前置运算
{
++m_Pages;
}
如果重载运算符使用了整数作为参数,则表示的是后置运算,此时的参数值可以被忽略,它只是一个标识,标识后置运算。
void operator++(int)//后置运算
{
++m_Pages;
}
默认情况下,将一个整数赋值给一个对象是非法的,可以通过重载运算符将其变成合法的。例如:
void operator = (int page){//重载运算符
m_Pages=page;
}
通过重载运算符也可以实现将一个整型数复制给一个对象,例如:
#include
using namespace std;
class CBook{
public:
int m_Pages;
void OutputPages()
{
cout<程序中重载了赋值运算符,给mybook对象赋值100,并通过OutpuName()函数将其进行输出。
也可以通过重载构造函数将一个整数赋值给一个对象
#include
using namespace std;
class CBook{
public:
int m_Pages;
void OutputPages()
{
cout<程序中定义了一个重载的构造函数,以一个整数作为函数参数,这就可以将一个整数赋值给一个CBook类的对象,语句mybook=100;将调用构造函数CBook(int page)重新构造一个CBook对象,并将其赋值给mybook对象。
4.转义运算符
C++语言中普通的数据类型可以进行强制类型转换,例如:
int i=10;
double d;
d = double(i)
程序中将整数i强制转换为double型。
语句
d=double(i)//等同于d=double(i)
double()在C++语言中被转化为转换运算符。通过重载转换运算符可以将类对象转换为想要的数据。
实例:转换运算符
#include
using namespace std;
class CBook{
public:
CBook(double iPage=0);
operator double(){
return m_iPage;
}
protected:
int m_iPage;
};
CBook::CBook(double iPage){
m_iPage = iPage;
}
int main(void){
CBook book1(10.0);
CBook book2(20.00);
cout<程序重载了转换运算符double(),然后将类CBook的两个对象强制转换为double类型后再进行求和,最后输出求和的结果。
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!
关键词:
数据类型
构造函数
前置运算
成员函数
一个对象