如何通过复制构造函数区分类中的每个变量

时间:2014-08-21 03:51:26

标签: c++ compilation

认为我有一个班级

class Man{
public:
int age;
int height;
}

然后在主

 Man black_man;
 black_man.age=20;
 black_man.height = 180;

 Man white_man = black_man;

因此,复制构造函数如何区分ageheight并正确复制。编译时,编译器是否为每个变量分配任何索引或前缀,以便为函数唯一标识name mangling之类的内容?这背后的机制究竟是什么?

1 个答案:

答案 0 :(得分:1)

根据我对C ++的理解,当依赖于默认构造函数时,C ++会创建浅层副本。也就是说,行为是使用第一个成员作为参数调用第二个成员(在数据结构指定的地址处找到)的默认复制构造函数。更进一步,每个数据结构的成员总是对齐相同的(也就是说,例如,一个struct lain out,因此它是一个浮点数然后是一个int,将保留前4个字节到float和下一个4对于int)。

供参考,请阅读; http://www.learncpp.com/cpp-tutorial/912-shallow-vs-deep-copying/