私は次の記事を指摘されました:
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
で、2回目の呼び出しで問題が発生する理由がわかりませんfunction
。確かにstr
、が最初の呼び出しに渡されるとき、これはのコピーにすぎないため、内部でstr
行われたことは、 ?で宣言された変数に影響を与えません。str
function
str
main