struct = struct 怎么工作

struct = struct 如何工作?
两个数组不能直接互相赋值:
int   a[3],   b[3]   ;
a   =   b   ;
编译器会报错。

可是,为什么把数组放在结构里就可以赋了?
struct   int_array_s   {
        int   a[3]   ;
};

int_array_s   a,   b   ;
//   初始化b
a   =   b   ;
可以运行,结果也正确。

我是用VC++2005编译的

所以我想知道结构之间赋值是怎么工作的?我一直以为结构之间赋值就是简单的让成员一一对应。如果是这样的话那么第2段代码应该也是错误的呀?可是却可以运行,唯一要做的就是赋值之前必须对b进行初始化,否则会运行时错误。这点我也不太明白。



------解决方案--------------------
重载了operator =
系统提供了一个默认的拷贝赋值符
执行按成员赋值的行为
------解决方案--------------------
结构体有默认的重载=、拷贝构造
------解决方案--------------------
struct其实就是class,两个class可以直接赋值(用default copy construction)
你在struct中加上private: struct_name(struct& pstr){}应该就不能直接赋值了。
------解决方案--------------------
"我一直以为结构之间赋值就是简单的让成员一一对应 ",是按字节填充。
------解决方案--------------------
对了,按字节填充,所以你要特别注意指针类型的成员