正しく理解していることを確認したい。以下の C++ 関数では、std::string の 3 つのインスタンスが作成されます。
- caller() の s1 の 1 つは、割り当てコンストラクターと呼ばれるものを介して
- コピー コンストラクターを介した callee() 関数の s2 パラメーター用の 1 つ
- コピー コンストラクターを介した s3 用の 1 つ
私は正しいですか?その場合、3 つのインスタンスはすべて範囲外になるとクリーンアップされますか? 私の理解が正しければ、これが良いコードかどうかを実際に尋ねているわけではありません。
void caller(void) {
std::string s1 = "hi";
callee(s1);
}
void callee(std::string s2) {
std::string s3 = s2;
}