ninjacvb
05-21-2011, 11:07 AM
بسم الله الرحمن الرحیم
میشه درباره std::strcpy که از هدر cstring است و در سربارگذاری زیر استفاده شده توضیح مختصر و مفید بفرمایید ( میدونم کارش چیه اما . . . )
1) const String &String::operator+=( const String &right )
2) {
3) size_t newLength = length + right.length;
4) char *tempPtr = new char[ newLength + 1 ];
5)
6) strcpy( tempPtr, sPtr );
7) strcpy( tempPtr + length, right.sPtr );
8)
9) delete [] sPtr;
10) sPtr = tempPtr;
11) length = newLength;
12) return *this;
13) }
( اما . . . در خط 7 چه اتفاقی میفته دقیقا ؟ و اینکه وقتی برای پارامتر مقصد و مبدا در strcpy اشاره گر قرار بدیم چه رفتاری نشون میده )
نظر من اینه که اگه خیلی خوش شانش باشیم خط 7 یه اشاره گر دقیقا دنباله ( ادامه ی ) tempPtr خواهد بود و برای چاپ تمام رشته هم میشه از tempPtr استفاده کرد. حالا نمیدونم تا چه حد نظرم درسته ؟ !!!
ضمنا آیا میشه به جای کد زیر در خط 6 نوشت tempPtr = sPtr
6) strcpy( tempPtr, sPtr );
میشه درباره std::strcpy که از هدر cstring است و در سربارگذاری زیر استفاده شده توضیح مختصر و مفید بفرمایید ( میدونم کارش چیه اما . . . )
1) const String &String::operator+=( const String &right )
2) {
3) size_t newLength = length + right.length;
4) char *tempPtr = new char[ newLength + 1 ];
5)
6) strcpy( tempPtr, sPtr );
7) strcpy( tempPtr + length, right.sPtr );
8)
9) delete [] sPtr;
10) sPtr = tempPtr;
11) length = newLength;
12) return *this;
13) }
( اما . . . در خط 7 چه اتفاقی میفته دقیقا ؟ و اینکه وقتی برای پارامتر مقصد و مبدا در strcpy اشاره گر قرار بدیم چه رفتاری نشون میده )
نظر من اینه که اگه خیلی خوش شانش باشیم خط 7 یه اشاره گر دقیقا دنباله ( ادامه ی ) tempPtr خواهد بود و برای چاپ تمام رشته هم میشه از tempPtr استفاده کرد. حالا نمیدونم تا چه حد نظرم درسته ؟ !!!
ضمنا آیا میشه به جای کد زیر در خط 6 نوشت tempPtr = sPtr
6) strcpy( tempPtr, sPtr );
