![](https://i-blog.csdnimg.cn/blog_migrate/b63920fffb9559f7c2bee6210e5c45eb.png)
定义看起来干巴巴的,举一个湿乎乎的例子:
全局函数:void fun1(Point p){ }; Point fun2(){Point c; return c;};
主调(main)函数:Point a, b(a); fun1(a); b = fun2();
【解析】用对象a初始化对象b,调用复制构造函数;对象a做实参与fun1的形参作形实结合生成fun1的局部对象p,调用复制构造函数;函数fun2返回函数的局部对象c时,调用复制构造函数返回一个临时无名对象给主调函数。
注:假设函数fun1的声明是:void fun1(Point &p);或void fun1(Point *p),则不会调用复制构造函数,因为不作形实结合、不生成函数的局部对象,函数fun1直接对实参进行操作。