C++中拷贝构造函数调用时机通常有三种情况

    • 使用一个已经创建完毕的对象来初始化一个新对象
    • 值传递的方式给函数参数传值
    • 以值方式返回局部对象
    1. #include <bits/stdc++.h>
    2. using namespace std;
    3. class Person{
    4. public:
    5. Person(){
    6. cout << "Person默认构造函数的调用" << endl;
    7. }
    8. Person(int num){ // 有参构造
    9. this->m_Num = num;
    10. cout << "Person有参构造函数的调用" << endl;
    11. }
    12. Person(const Person& per){
    13. this->m_Num = per.m_Num;
    14. cout << "Person拷贝构造函数的调用" << endl;
    15. }
    16. ~Person(){
    17. cout << "Person析构函数的调用" << endl;
    18. }
    19. public:
    20. int m_Num;
    21. };
    22. Person func(Person per){
    23. return per;
    24. }
    25. int main(){
    26. Person person2(10); // 括号法调用有参构造函数
    27. Person person3(person2);
    28. func(person2);
    29. return 0;
    30. }

    图示:
    image.png