下面来说几种大家不常用的运算符重载:(重载的方法和形式绝对不是唯一的,更具需要你可以自己去设计)
1.[]
实现:
class A
{
public:
A()
{
a[0]=1;
a[1]=2;
a[2]=3;
}
int& operator[](int i)
{
if(i<0||i>=3)
{
cout<<"Boundry error!";
}
return a[i];
}
private:
int a[3];
}
这种重载后,你可以很方便的控制对象中的数组了,很类似于C#中的索引器的功能!
在主函数里你可以这样子用:A a;a[1]=10;cout<<a[2];...
2.()
实现·:
class Complex
{
public:
Complex(int r,int i)
{
real=r;
imag=i;
}
void operator()(int i,int j)
{
real=i;
imag=j;
}
private:
int real;
int imag;
}
这种重载之后你可以随时随地的利用()来给数据成员赋值!
在主函数里你可以这样写:
Complex a(1,2);//这是构造函数
a(2,5);//()重载...
3.->
实现:
class A
{
public:
void Show()
{
cout<<"Hello World!";
}
A* operator->()
{
return this;
}
}
这种重载之后你可以像使用.一样使用->了,实际上这个功能没什么意义,只是想说明一下,->如何重载;
在主函数里你可以这样写:
A a;
a.Show();
a->Show();
C++只有为数不多的几个运算符不能重载,还有很多有趣的重载,大家自己动手试试,C++的重载功能可是C++优于的一个重要的原因之一了!
运算符的重载:[],(),->;
最新推荐文章于 2022-12-17 10:45:27 发布