这可能是一个非常基本的问题,但不知何故它让我上当了……当我编写测试代码时,它似乎可以工作,但在生产中出现了一些问题。
// Header file
#define length 100
typedef struct testStr_t {
int a;
char b;
char t1[length];
char t2[length];
} test;
void populateTest(test*);
// source file
test test1;
test test2;
populateTest(&test1);
test2 = test1;test2会成为test1的深度副本吗?还是说这里有问题呢?代码是用C编译器编译的还是用C++编译器编译的,这有关系吗?
发布于 2011-05-24 05:31:18
深度复制只会受到指针的阻碍,所以你的struct可以在C中被正确复制。除非你自己定义了不能正确复制的operator=,否则它在C++中也能正常工作。您只需要为具有指针的类型定义operator=,因为指针的浅层副本将复制指针但共享数据。
https://stackoverflow.com/questions/6103221
复制相似问题