我指着下面的文章:使用相同的變量將值構造函數調用函數複製兩次會導致問題?
http://www.codeproject.com/Tips/78946/C-Copy-Constructor-in-depth
,我們有代碼:
class string
{
// constructor
string(char* aStr)
{
str = new char[sizeof(aStr)];
strcpy (str,aStr);
}
// destructor
~string()
{
del str;
}
char *getChars(){ return str; }
char* str;
};
void function (string str)
{
// do something
}
void main()
{
string str("hello");
function(str);
function(str); // program crashes
}
我不明白,爲什麼在main
,就與第二次調用問題function
?當str
傳遞給第一個電話時,這隻會是str
的副本,因此function
內的str
的任何操作都不會影響main
中聲明的變量str
?
[Rule of Three](http://en.wikipedia.org/wiki/Rule_of_three_(C%2B%2B_programming));它只會在一次通話中崩潰。 – 2013-03-11 21:50:52
[三條法則是什麼?]的可能重複(http://stackoverflow.com/questions/4172722/what-is-the-rule-of-reeree) – juanchopanza 2013-03-11 21:51:39
三條規則似乎是今晚的熱門主題。 – juanchopanza 2013-03-11 21:52:02