文章目录
1.算法描述
- 1.算法描述
- 2.可重载运算符和不可重载运算符
- 3.作者答疑
C++运算符在编程过程中,非常普遍,它采用一种更容易了解的方式编码目标逻辑。其本质是改变运算符的运算过程。在实现形式上分为两种,一种非类的成员函数,另一种是类的成员函数。先介绍第一种,非类的成员函数。以+号运算符为例,它涉及两个参数,加号的前面一个和后面一个,以及一个返回值。
object3 operator+(const object1 pre&, const object1 aft&);
例子程序如下:
class class1
{
public:
class1()
{
para = 1;
}
~class1()
{
}
public:
int para;
};
class class2
{
public:
class2()
{
para = 2;
}
~class2()
{
}
public:
int para;
};
class class3
{
public:
class3()
{
para = 0;
}
~class3()
{
}
public:
int para;
};
class3 operator+(const class1 c1, const class2 c2)
{
class3 c3;
c3.para = c1.para + c2.para;
return c3;
}
void main()
{
class1 c1;
class2 c2;
class3 c3 = c1 + c2;
}
另一种类的成员函数,其中赋值运算符重载必须是类的成员函数,代码范例如下:
class class1;
class class2;
class class3;
class class1
{
public:
class1()
{
para = 1;
}
~class1()
{
}
class1 operator=(class2 c2);//赋值操作
public:
int para;
};
class class2
{
public:
class2()
{
para = 2;
}
~class2()
{
}
operator class1();//强制类型转换 class2转class1
public:
int para;
};
class class3
{
public:
class3()
{
para = 0;
}
~class3()
{
}
class3 operator-(void)
{
this->para = -this->para;
return *this;
}
class3 operator++()//++前缀
{
this->para++;
return *this;
}
class3 operator++(int)//++后缀
{
class3 c3 = *this;
++this->para;
return c3;
}
public:
int para;
};
class1 class1::operator = (class2 c2)
{
this->para = c2.para;
return *this;
}
class2::operator class1()
{
class1 c1;
c1.para = this->para;
return c1;
}
class3 operator+(const class1 c1, const class2 c2)
{
class3 c3;
c3.para = c1.para + c2.para;
return c3;
}
class3 operator (成员访问),,(逗号),
下面是不可重载的运算符列表: .:成员访问运算符 .*, ->*:成员指针访问运算符 :::域运算符 sizeof:长度运算符 ?::条件运算符 #: 预处理符号
3.作者答疑
如有疑问,请留言。