当我将对象作为const引用传递给另一个对象时,是否有复制?我一直假设,因为我通过引用传入对象,成员对象本身实际上是我传入的对象而不是副本。我制作了一个测试程序,它可以使得传入的引用对象在作用域结束时被销毁,但不会像我预期的那样崩溃。这是一个等待发生的错误还是被复制的对象?通过const引用复制传递C++对象构造函数
#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仍然有效或被删除? (在对象本身中)
复制:':mStr(str)' – 2012-07-07 19:02:23
要正确测试该行为,您应该使用非std :: string,但应该使用您自己编写的类的对象。你正在测试std :: string,而不是现在的行为! – 2012-07-07 19:05:25