struct S {
S() {}
S (const S &) = delete;
};
void f1 (S s) {}
void f2 (S &s) {}
int main() {
S s;
f2(s);
}
既然 S(S &s)
被删除,为什么使用 f2
不会抛出错误,因为当它被声明时它传递了参数 S &s
?当我使用 f1(s)
时,它会抛出一个错误。我查看了已删除函数的定义,我认为这会引发错误,但事实并非如此。为什么?
最佳答案
因为通过引用传递不会创建拷贝(这是 f2
使用的)。
f1
接受一个按值传递的参数,它会生成一个拷贝。
关于c++ - 为什么使用这个删除的函数有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12110083/