std::vector<std::string>
次のコードが呼び出されたときに、どのように自己を初期化しますか
std::vector<std::string> original;
std::vector<std::string> newVector = original;
std::vector<std::string> new
コピー コンストラクターがduringで呼び出されるように見えますnewVector = original
が、 はどのようにstd::string
内に持ち込まれorginal
ますか? それらはコピーですか、それとも新品std::string
ですか? メモリnewVector[0]
も と同じoriginal[0]
です。
私が尋ねる理由は、私が次のことをしていると言うことです
#include <vector>
#include <string>
using namespace std;
vector<string> globalVector;
void Initialize() {
globalVector.push_back("One");
globalVector.push_back("Two");
}
void DoStuff() {
vector<string> t = globalVector;
}
int main(void) {
Initialize();
DoStuff();
}
t
DoStuff
(最適化されていないビルドでは)の範囲外になりますが、の int
へのポインターで満たされているだけの場合、デストラクタが呼び出され、使用されているメモリが削除される可能性があります。呼ばれた?std::string
globalVector
std::string
globalVector[0]
std::string
DoStuff
ナットシェル、私は基本的に尋ねています、std::vector
のコピーコンストラクターが呼び出されると、内部の要素はどのようにコピーされますか?