我的代码:
#include <iostream>
#include <functional>
using namespace std;
struct A {
A() = default;
A(const A&) {
cout << "copied A" << endl;
}
};
void foo(A a) {}
int main(int argc, const char * argv[]) {
std::function<void(A)> f = &foo;
A a;
f(a);
return 0;
}
我在控制台上看到两次“复制的 A”。为什么对象被复制两次,而不是一次?我怎样才能正确防止这种情况?