在地图上飞行 2015-05-22 13:12 采纳率: 25%
浏览 1772

拷贝构造函数和拷贝赋值运算符的调用问题

假设有如下类:
class HasPtr{
public:
HasPtr(const string &s):
ps(new string(s)),i(0){}
HasPtr(const HasPtr &hp){

ps=new string(*hp.ps);
i=hp.i;
}
HasPtr(const char *s):ps(new string(s)),i(0){}
HasPtr & operator=(const HasPtr &);
private:
string *ps;
int i;

};
情况一 :HasPtr h1("hehe"),h2; h2=h1; 问:编译器会优先调用拷贝构造函数和拷贝赋值运算符?
情况二:假如没有定义拷贝构造函数,执行与上述相同的代码。问:编译器会优先调用自定义的拷贝赋值运算符,还是编译器合成的拷贝构造函数?
新手求大神指教。

  • 写回答

5条回答 默认 最新

  • oyljerry 2015-05-22 13:49
    关注

    h1是构造,h2是赋值
    只有HasPtr h2(h1)
    才是拷贝构造

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog