私は、コンストラクタを使用してstd::string
にchar*
を変換:C++:std :: stringへのcharポインタはコンテンツをコピーしますか?
char *ps = "Hello";
std::string str(ps);
私はSTDコンテナは、彼らがそれらを格納するように求められたときに値をコピーする傾向があることを知っています。 文字列全体またはポインタのみがコピーされていますか? その後、str = "Bye"
を実行すると、psが「さよなら」を指すように変更されますか?
割り当て演算子がオーバーロードされていますが、実際に正しく推測していれば、コピーとスワップのアルゴリズムが使用されます。一時的な文字列オブジェクトはchar *から作成されます。 –
@Koushik:あなたは間違っていると思います。ここで浅いコピーを作成すると、直観に反して誤りが発生しやすくなります。 –
@VioletGiraffeはい私はポインタがコピーされていないことを認識し、深いコピーがあり、これを保持する内部バッファがあるはずです。 –