ninjacvb
شنبه 31 اردیبهشت 1390, 11:25 صبح
بسم الله الرحمن الرحیم
میشه درباره std::strcpy که از هدر cstring است و در سربارگذاری زیر استفاده شده توضیح مختصر و مفید بفرمایید ( میدونم کارش چیه اما . . . )
const String &String::operator+=( const String &right )
{
size_t newLength = length + right.length; // new length
char *tempPtr = new char[ newLength + 1 ]; // create memory
strcpy( tempPtr, sPtr ); // copy sPtr
strcpy( tempPtr + length, right.sPtr ); // copy right.sPtr
delete [] sPtr; // reclaim old space
sPtr = tempPtr; // assign new array to sPtr
length = newLength; // assign new length to length
return *this; // enables cascaded calls
} // end function operator+=
( اما . . . در خط 7 چه اتفاقی میفته دقیقا ؟ و اینکه وقتی برای پارامتر مقصد و مبدا در strcpy اشاره گر قرار بدیم چه رفتاری نشون میده )
نظر من اینه که اگه خیلی خوش شانش باشیم خط 7 یه اشاره گر دقیقا دنباله ( ادامه ی ) tempPtr خواهد بود و برای چاپ تمام رشته هم میشه از tempPtr استفاده کرد. حالا نمیدونم تا چه حد نظرم درسته ؟ !!!
میشه درباره std::strcpy که از هدر cstring است و در سربارگذاری زیر استفاده شده توضیح مختصر و مفید بفرمایید ( میدونم کارش چیه اما . . . )
const String &String::operator+=( const String &right )
{
size_t newLength = length + right.length; // new length
char *tempPtr = new char[ newLength + 1 ]; // create memory
strcpy( tempPtr, sPtr ); // copy sPtr
strcpy( tempPtr + length, right.sPtr ); // copy right.sPtr
delete [] sPtr; // reclaim old space
sPtr = tempPtr; // assign new array to sPtr
length = newLength; // assign new length to length
return *this; // enables cascaded calls
} // end function operator+=
( اما . . . در خط 7 چه اتفاقی میفته دقیقا ؟ و اینکه وقتی برای پارامتر مقصد و مبدا در strcpy اشاره گر قرار بدیم چه رفتاری نشون میده )
نظر من اینه که اگه خیلی خوش شانش باشیم خط 7 یه اشاره گر دقیقا دنباله ( ادامه ی ) tempPtr خواهد بود و برای چاپ تمام رشته هم میشه از tempPtr استفاده کرد. حالا نمیدونم تا چه حد نظرم درسته ؟ !!!