Excel不相邻列如何打印在一起-英雄云拓展知识分享
137
2023-11-01
【摘要】 本书摘自《C++程序开发案例课堂》一书中第12章,第1节,由刘春茂、李琪编著。
12.1 什么是运算符重载
对于 C++ 中预定义的运算符操作对象,只是针对 C++ 中的基本数据类型。如果对于用户 自己定义的结构体或者类进行运算操作,那么C++ 中定义的运算符就对此没有什么作用了。
为了解决这类问题, C++ 通过运算符重载的操作赋予了运算符新的功能,使得预定义的 运算符可以对我们自己定义的数据类型进行操作,扩展了运算符的功能。
运算符重载的实现主要是通过运算符函数实现的。运算符函数定义了重载的运算符的操 作。运算符重载时要遵循以下规则。
(1)在 C++ 中,除了类属关系运算符、成员指针运算符和作用域运算符外,其他所有运 算符都可以重载。
(2)重载运算符只能重载C++ 语言中已有的运算符,不能另外重新创建新的运算符。
(3)运算符重载的实质是函数重载,因此遵循函数重载的选择原则。
(4)重载之后的运算符不能改变运算符的优先级和结合性,也不能改变运算符操作数的
个数及语法结构。
(5)运算符重载不能改变该运算符用于内部类型对象的含义。
(6)运算符重载是针对新类型数据的实际需要对原有运算符进行适当的改造,不能与原 功能有太大出入。
12.1.1 运算符重载的形式
运算符函数重载一般有两种形式:重载为类的成员函数和重载为类的友元函数。对于友 元函数的重载,如果想要访问私有成员和保护成员,需要使用类的公共接口提供的 get 和 set 函数。
1.成员函数运算符
运算符重载为类的成员函数的一般格式如下:
<函数类型>operator<运算符>(<参数表>)
<函数体>
当运算符重载为类的成员函数时,函数的参数个数比原来的操作数要少一个(后置单目运 算符除外),这是因为成员函数用 this 指针隐式地访问了类的一个对象,它充当了运算符函数 最左边的操作数。因此得出如下结论。
(1)双目运算符重载为类的成员函数时,函数只显式说明一个参数,该形参是运算符的 右操作数。
(2)前置单目运算符重载为类的成员函数时,不需要显式说明参数,即函数没有形参。
(3)后置单目运算符重载为类的成员函数时,函数要带有一个整型形参。 调用成员函数运算符的格式如下:
<对象名>.operator <运算符>(<参数>)
它等价于:
<对象名><运算符><参数>
若一个运算符的操作需要修改对象的状态,选择重载为成员函数比较好。 下面通过一个例子来介绍怎样对运算符进行重载。
【例12-1】认识运算符重载(代码12-1.txt)。
新建名为ysfztest 的 C++Source File 源程序。源代码如下:
#includeusing namespace std;
class com{
private:
int real;
int img;
com(int real = 0,int img =0){
this->img = img;
com operator +(com x)(
return com(this->real + x.real, this->img + x.img);
com operator +(int x){
return com(this->real + x, this->img);
friend com operator +(int x, com y);
void show(){
cout << real <<","<
};
com operator +(int x, com y)(
return com(x+ y.real,y.img);
int main()
b+ c; a,b(1,2),c(2,3);
swb();+ 3;
s); +c;
a.show();
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~