cxx 98/03里, HasPtr hp4 = HasPtr(1,str); 语法上讲,是调用拷贝构造,而HasPtr(1,str)是个右值,是带const的,(不过cxx 11及以上,是右值引用),HasPtr(HasPtr &),这种,自然就编译不过了; 之所以没用到,那是编译器优化,叫做copy elision,实际就是直接调用了一次构造,没有出现临时对象,印象中这个功能VC是关不掉的,g++可以通过--fno-elide-constructors选项关闭;
点赞 2
牛客网
牛客企业服务