我思考了一下。
HasPtr hp4 = HasPtr ( 1 ,str);
先调用了 HasPtr( int i1, string &str )构造函数,构造出一个临时右值对象。
然后右值对象通过 HasPtr( const HasPtr & hp)拷贝构造,传给hp4.

但是,这样是错的= =,为什么没有调用拷贝构造函数啊。
大佬解释一下,我也迷糊了