概述
为什么是简单介绍呢…
因为我也不是特别懂
我所有的operator的知识都是从我的学长spark给我发的一段代码里头猜出来的
首先,简单的定义
结构体是使用struct定义的
例如
struct room
{
int a,b,c,d[123];
};
这样我们就有了room类型的数据结构
在该结构当中,含有三个变量a,b,c
使用room定义新的变量
room t;
cout<<t.a<<endl;
cout<<t.d[1];
此处的定义和int、long long之类的定义是一样的
同时,当我们想调用定义的t的a变量时,通过调用t.a即可
调用数组也是相同的用法,相当于就是在d前增加了一个前缀t.来区分其他room类型的数据当中的d数组
我们也可以定义room类型的数组
room t[100]
cout<<t[1].d[1]
在这种程度上来讲,结构体仅仅是多了几个变量,同时也增加了几个后缀来调用这些变量
然后,定义操作
我们重新定义一下room类型的数据结构
这次我们将它定义得正式一点
我们希望room能够表示某个房间当中的人,空位,人数,以及输出它内部有哪些人,踢出第x个人,清空数据
struct room
{
int people[500],seat,count;
void out()
{
for(int i=0;i<=seat;i++)
cout<<people[i]<<endl;
}
void clear()
{
memset(people,1,sizeof(people);
count=0;
}
void kick(int x)
{
people[x]=0;
count--;
}
}
这样定义,我们的目的就达到了
比如,我们定义房间a当中有十个空位、三个人1,2,3
那么
room a;
a.seat=10;
a.count=3;
a.people[1]=1;
a.people[2]=2;
a.people[3]=3;
这样定义就完成了
当我们想知道每个座位上的人,踢掉第2个,然后将这些人清空
a.out();
a.kick(2);
a.clear();
此处的使用与queue的push()、pop()的调用方式类似
以上内容均为瞎逼胡扯
下面讲最厉害的重载
operator
operator的作用就是重新定义某种运算符
比如,重新定义矩阵的加法
struct matrix
{
int mat[20][20];
matrix()//初始化
{
memset(mat,0,sizeof(mat));
}
operator +(const int x)//把当前矩阵每个位子都加上数字x
{
matrix c=matrix();
for(int a=0;a<=19;a++)
for(int b=0;b<=19;b++)
c.mat[a][b]=mat[a][b]+x;
return c;
}
operator +(const matrix&y)//把当前矩阵和y矩阵相加
{
matrix c=matrix();
for(int a=0;a<=19;a++)
for(int b=0;b<=19;b++)
c.mat[a][b]=mat[a][b]+y.mat[a][b];
return c;
}
}
上述操作定义了martix类型与int和matrix相加的操作
operator后的符号是重载(重新定义)的符号,此处为'+'
而符号后面的括号内的类型是相加的类型
如
operator+(const int x)
定义的就是matrix+int的操作
const使x不可更改(虽然不知道有什么用,但是用它就是了)
而
operator+(const matrix & y)
当中的&符号,我也不知道有啥用
但是好像操作的对象是同种类型,如matrix+matrix时就要用&
而在操作时还要新声明一个maxtrix c=matrix()的目的是
在计算三个matrix x,y,z
x=y+z时,如果不定义c,那么y+z就会使得y的值被更改
我们用c.mat[x][y]=mat[x][y]+y.mat[x][y]
就可以避免原矩阵的数字被更改
而使用matrix()来初始化,纯粹是为了表示这个数据类型是有初始化的操作的
因为我们无法在定义mat的时候直接赋处置,所以我们可以使用matrix()来完成赋初值
另外,在调用自身的mat时,是不需要加上前缀的
但是调用加上的矩阵y的mat时,要加上前缀->y.mat
差不多就是这些了吧…有不懂的可以提问,虽然我也不清楚很具体的知识
但是还是可以一起找找答案
并且我知道这种博客写出来很多东西可能也只有我看得懂
所以看了之后有很多疑惑的地方很正常,提问就好了
最后
以上就是瘦瘦羽毛为你收集整理的简单介绍结构体重载的全部内容,希望文章能够帮你解决简单介绍结构体重载所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复