如何知道一个副本构造函数被称为?

问题描述 投票:0回答:1

考虑示例,我知道将一个对象分配给另一个对象,调用复制构造函数,Line 2确实在这里也调用了复制构造函数。 这里复制构造函数调用的总数是多少?

class Sample{ 
  public:
     void compare(Sample args){    }
};
int main(){
  Sample  s1;
  Sample  s2=s1; //Line 1
  s1.compare(s2); // Line 2
}
c++ copy-constructor
1个回答
0
投票

只需将复制构造函数添加到您的类定义中,然后查看结果。

#include <iostream>
class Sample{ 
  public:
    Sample() = default;
    Sample( const Sample & ) { std::cout << "Sample( const Sample & )\n"; }
     void compare(Sample args){    }
};

int main(){
  Sample  s1;
  Sample  s2=s1; //Line 1
  s1.compare(s2); // Line 2
}

程序输出为

Sample( const Sample & )
Sample( const Sample & )

如果对通话进行评论

  // s1.compare(s2); // Line 2

然后输出将是>

Sample( const Sample & )
© www.soinside.com 2019 - 2024. All rights reserved.