2012-06-20 23 views

回答

1

這是不正確的,它們是完全獨立的字符串副本。當一個被刪除時,另一個仍然存在。賦值運算符正是你應該如何複製這些。

+2

他的代碼不使用賦值運算符。 –

+0

是的,我知道,但賦值運算符是一種複製方式。我想我應該說複製構造函數也複製。 – Jarryd

+0

您應該從答案中推斷出他的代碼使用了賦值運算符。 –

7

聲明:我假設t也是std::string,糾正我,如果我錯了。

我想在此之後,s和t指向地址。

他們不,他們不是指針。

一次t是刪除,S也是空

t不能被刪除,或者如果你刪除它,那是你的問題就在這裏。不要刪除t,它會自動超出範圍。

在您的代碼中,您使用std::string的複製構造函數 - 正如名稱所示,它將創建原始字符串的副本。

+0

它爲什麼't'是什麼?無論如何,指定爲's'都會生成副本。如果刪除't'是一個定義的操作,它對's'沒有影響。 –

+0

@RobKennedy它在我的答案很重要,因爲我說't'不能被刪除。 :) –