文字列を変更して返す次の 2 つの関数があるとします。
// modify the original string, and for convenience return a reference to it
std::string &modify( std::string &str )
{
// ...do something here to modify the string...
return str;
}
// make a copy of the string before modifying it
std::string modify( const std::string &str )
{
std::string s( str );
return modify( s ); // could this not call the "const" version again?
}
このコードは GCC g++ を使用して機能しますが、理由/方法がわかりません。2番目の関数が自分自身を呼び出し、スタックが使い果たされるまで制御不能な再帰が発生するのではないかと心配しています。これは動作することが保証されていますか?