认为我有一个班级
class Man{
public:
int age;
int height;
}
然后在主
Man black_man;
black_man.age=20;
black_man.height = 180;
Man white_man = black_man;
因此,复制构造函数如何区分age
和height
并正确复制。编译时,编译器是否为每个变量分配任何索引或前缀,以便为函数唯一标识name mangling
之类的内容?这背后的机制究竟是什么?
答案 0 :(得分:1)
根据我对C ++的理解,当依赖于默认构造函数时,C ++会创建浅层副本。也就是说,行为是使用第一个成员作为参数调用第二个成员(在数据结构指定的地址处找到)的默认复制构造函数。更进一步,每个数据结构的成员总是对齐相同的(也就是说,例如,一个struct lain out,因此它是一个浮点数然后是一个int,将保留前4个字节到float和下一个4对于int)。
供参考,请阅读; http://www.learncpp.com/cpp-tutorial/912-shallow-vs-deep-copying/