هنگام
برنامه نويسی مواردی پيش می آيد که نياز به تبديل انواع به يکديگر داريم. مثلا
هنگامی که اشيايی از کلاسهای متفاوت تعريف شده توسط کاربر را با يکديگر ترکيب
شوند کامپايلر نمی داند که چگونه تبديلات لازم را انجام دهد و برنامه نويس بايد
شيوه تبديل را مشخص نمايد. تبديل انواع به يکديگر را می توان توسط سازنده تبديل
انجام داد. اين تابع که تک آرگومانی می باشد، می تواند اشيايی از يک کلاس را به
اشيايی از کلاس ديگر تبديل کند. در واقع هر سازنده تک آرگومانی می تواند به
عنوان سازنده تبديل در نظر گرفته شود.
عملگر تبديل نيز می تواند شيئی از کلاسی را به شيئی از کلاسی ديگر
يا انواع اوليه تبديل نمايد. اين عملگر بايد به صورت تابع عضو
تعريف شود. به دستور زير توجه نماييد:
test::operator char* () const;
دستور فوق يک يک تابع تبديل را گرانبار می نمايد. اين تابع يک شیء
موقت از نوع *char
را به شيئی از نوع ايجاد شده توسط کاربر با نام
test
تبديل می نمايد. همانطور که مشاهده می کنيد برای اين تابع نوع
خروجی در نظر گرفته نشده است. در حقيقت عملگر تبديل نبايد نوع
خروجی داشته باشد و نوع خروجی ، نوع شيئی می باشد که در حال تبديل
است. مثلا اگر
s
شيئی از کلاس
test
در دستور بالا باشد هنگامی که کامپايلر به عبارت
(char *) s
برخورد می کند، فراخوانی
s.operator char *()
ايجاد می گردد.
myClass::operator int() const;
myClass::operator otherClass() const;
دو دستور فوق به ترتيب عملگر تبديلی برای تبديل شيئی از کلاس
myClass
به يک عدد صحيح و دومی عملگر تبديلی برای تبديل شيئی از کلاس
myClass
به شيئی از کلاس ديگری با نام
otherClass
تعريف می کنند.
|