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){}应该就不能直接赋值了。
[解决办法]
"我一直以为结构之间赋值就是简单的让成员一一对应 ",是按字节填充。
[解决办法]
对了,按字节填充,所以你要特别注意指针类型的成员