如何知道调用了拷贝构造函数?
How to know a copy constructor is called?
考虑到这个例子,我知道将一个对象分配给另一个对象,调用复制构造函数,Line 2
在这里也调用复制构造函数。 这里总共调用了多少次拷贝构造函数?
class Sample{
public:
void compare(Sample args){ }
};
int main(){
Sample s1;
Sample s2=s1; //Line 1
s1.compare(s2); // Line 2
}
只需将复制构造函数添加到您的 class 定义中并查看结果。
#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 & )
考虑到这个例子,我知道将一个对象分配给另一个对象,调用复制构造函数,Line 2
在这里也调用复制构造函数。 这里总共调用了多少次拷贝构造函数?
class Sample{
public:
void compare(Sample args){ }
};
int main(){
Sample s1;
Sample s2=s1; //Line 1
s1.compare(s2); // Line 2
}
只需将复制构造函数添加到您的 class 定义中并查看结果。
#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 & )