结构数组

来源:百度知道 编辑:UC知道 时间:2024/06/06 23:22:02
比如定义了两个结构数组,data xx[3],data yy[3];
可以直接写xx[cnt++]=yy[i]吗?还是必须像xx[cnt++].num=yy[i].num这样把结构里的每一项赋值啊???

如果你没有自行重载结构的operator=,则必须按成员赋。结构体默认是不能整体从一个传递给另一个的,除非一种情况,调用函数传递参数,那里你可以传整个结构体(当然,这仍然不是赋值操作),编译器会自动生成相应代码(有可能优化成位串复制)。
注意一点:
struct tagA
{
int i;
double d;
};
tagA a={3,4.5};
这种语法是初始化,并不是赋值。可以在学类时,体会一下默认构造函数、复制构造函数和operator=这三者的区别。

可以你那样写,不过要根据自身情况,如果里面包含有指针的话,最好重载赋值操作符以避免操作野指针