原理上楼上已经说了。至于为什么vs在p2 = g(); 会调用拷贝我只能猜类之间直接赋值会调用拷贝复制函数(PS:不是拷贝构造),也就是 = 的重载函数,前提是你重载了这个函数明显你是没有重载的,所以至于这个重载的形态是什么,那应该由编译器来默认决定了。所以有可能是在cb编译器上,它会帮你生成一个默认的拷贝复制函数然而VS的编译器采用的策略则是,用你写的拷贝构造来当拷贝复制以上纯属猜测,编译器那些东西要看手册才知道
原理上楼上已经说了。
至于为什么vs在p2 = g(); 会调用拷贝
我只能猜
类之间直接赋值会调用拷贝复制函数(PS:不是拷贝构造),也就是 = 的重载函数,前提是你重载了这个函数
明显你是没有重载的,所以至于这个重载的形态是什么,那应该由编译器来默认决定了。
所以有可能是在cb编译器上,它会帮你生成一个默认的拷贝复制函数
然而VS的编译器采用的策略则是,用你写的拷贝构造来当拷贝复制
以上纯属猜测,编译器那些东西要看手册才知道