c++拷贝构造函数何时调用?

我对C++中的类了解的不够深入,遇到了关于类的拷贝构造函数的问题。请教一下。
按照教程,我写了一个student类头文件,含私有数据成员*name,*num,age。成员函数包括构造函数,拷贝构造函数、析构函数等。
然后在cpp文件中包含一个使用类的拷贝构造函数的函数,并在main()函数中调用他。
问题:在定义时直接调用函数和先定义后调用,区别在什么地方?希望讲的透彻些。

在C++中,下面三种对象需要调用拷贝构造函数(有时也称“复制构造函数”):
1) 一个对象作为函数参数,以值传递的方式传入函数体;
2) 一个对象作为函数返回值,以值传递的方式从函数返回;
3) 一个对象用于给另外一个对象进行初始化(常称为赋值初始化);

--在定义时直接调用函数和先定义后调用,区别在什么地方,没区别,硬要讲的话,就是编译器在给s1复制的时候调用了类似s2复制的方式。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-02
在C++中,下面三种对象需要调用拷贝构造函数(有时也称“复制构造函数”):
1) 一个对象作为函数参数,以值传递的方式传入函数体;
2) 一个对象作为函数返回值,以值传递的方式从函数返回;
3) 一个对象用于给另外一个对象进行初始化(常称为赋值初始化);

--在定义时直接调用函数和先定义后调用,区别在什么地方?
没区别,硬要讲的话,就是编译器在给s1复制的时候调用了类似s2复制的方式。追问

恩,这个层面我还是能理解的,就是不知道针对上面两张图的情况,定义时初始化和先定义后初始化为什么会造成不同的结果呢?

本回答被提问者和网友采纳
第2个回答  2014-12-02
第一张应该是s2调用默认的构造函数 第二张是s2得到的是changeage()返回的值 没有调用构造函数
相似回答