میخواستم بدونم که چی میشه؟
Printable View
میخواستم بدونم که چی میشه؟
ما که دلفي بلد نيستيم . شما بگين اين دستور چيکار مي کنه و بعد ما هم معادلش رو تو ++C ميگيم .
مثلا تغییر ادازه یه آرایه.
مثلا یه آرایه دارم به طول 4 میخوایم طولش بشه 10
سلام
همونطور که می دونید در پلاس چنین متد های آماده ای واسه اشیا نوشته نشده.:41:
اما کتابخانه هایی هستند که...
ولی شما می تونید خودتون برای این کار تابع یا متدی ایجاد کنید
برای مثال تابع زیرطول یک آرایه از هر نوعی رو به اندازه ی فرستاده شده بهش تبدیل می کنه :
برای تستش هم می تونید از کد زیر استفاده کنید :کد:template<class T>
void SetLength(T*& object,int LastLength,int NewLength)
{
T* ObjectCopy = new T[LastLength];
for(int i = 0;i < LastLength;i++)
ObjectCopy[i] = object[i];
object = new T[NewLength];
if(LastLength > NewLength)
LastLength = NewLength;
for(int j = 0;j < LastLength;j++)
object[j] = ObjectCopy[j];
}
موفق باشید.کد:int main()
{
int* IntArray = newint[1];
IntArray[0] = 1;
SetLength(IntArray,1,2);
IntArray[1] = 2;
for(int i = 0;i < 2;i++)
cout << IntArray[i]<<endl;
system("pause");
return 0;
}
میشه در مورد این کد توضیح بدین؟
T*& object
با سلام
ببخشید دیر شد...
همونطور که از کلمه ی کلیدی template پیداست ما در اینجا از الگوها استافاده کردیم تا بتونیم یک نوعی ایجاد کنیم که به نوعی پدر همه ی شی ها باشه و به همین خاطر در اینجا می تونیم طول هر آرایه ای از هر نوعی رو دست کاری کنیم
و اما
شی T همون object هست که می تونه هر نوعی باشه(مثلا int یا char یا ...)
واما
کاراکتر * به معنای آرایه بودن شی T هست
و
کاراکتر & هم باعث میشه تا بجای اینکه مقدار آرایه ی T به عنوان پارمتر به تابع فرستاده بشه "آدرسش" فرستاده بشه.
و حالا چرا آدرس ؟
چون می خوایم تغییراتی که بر روی آرایه در داخل تابع انجام دایدم در خارج از ارایه هم قابل مشاهده باشند.
موفق باشید.
خوب حالا این یعنی چی؟
شی T همون object هست که می تونه هر نوعی باشه(مثلا int یا char یا ...)
T که mahdi استفاده کرده در واقع استفاده از خاصیت polymorphism در ++C هست که به معنی مستقل از type بودن تابع شماست.
object یعنی شی.(نوع object در دات نت)نقل قول:
خوب حالا این یعنی چی؟
شی T همون object هست که می تونه هر نوعی باشه(مثلا int یا char یا ...)
در اینجا T می تونه هر نوعی باشه.
شما می تونید بجای T هر نوعی که خواستید قرار بدید ولی دیگه تابع SetLength فقط می تونه طول آرایه ای از اون نوع رو تغییر بده.