我想确保我理解正确。在下面的 c++ 函数中,将创建三个 std::string 实例:
- 一个用于调用者()中的 s1,我相信它被称为赋值构造函数
- 一个用于 callee() 函数的 s2 参数,通过它的复制构造函数
- 一个通过其复制构造函数用于 s3
我对么?如果是这样,所有三个实例都会在超出范围时被清理吗?我并不是真的在问这是否是好的代码,只要我的理解是正确的。
void caller(void) {
std::string s1 = "hi";
callee(s1);
}
void callee(std::string s2) {
std::string s3 = s2;
}