当我将一个对象作为 const 引用传递给另一个对象时,是否制作了副本?我一直假设,因为我通过引用传入对象,所以成员对象本身实际上是我传入的对象,而不是副本。我制作了一个测试程序,导致传入的引用对象在作用域结束时被销毁,但它并没有像我预期的那样崩溃。这是一个等待发生的错误还是对象被复制?
#include <iostream>
#include <string>
class Something
{
public:
Something(const std::string& str) : mStr(str) {}
const std::string& str() const
{
return mStr;
}
private:
std::string mStr;
};
int main()
{
Something* something;
{
std::string temp = "Testing.";
something = new Something(temp);
}
std::cout<<something->str()<<"\n";
delete something;
return 0;
}
那个 std::string 仍然有效还是被删除了?(在对象本身)