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はまだ有効ですか、それとも削除されていますか?(オブジェクト自体で)