تبديل انواع به يکديگر

    هنگام برنامه نويسی مواردی پيش می آيد که نياز به تبديل انواع به يکديگر داريم. مثلا هنگامی که اشيايی از کلاسهای متفاوت تعريف شده توسط کاربر را با يکديگر ترکيب شوند کامپايلر نمی داند که چگونه تبديلات لازم را انجام دهد و برنامه نويس بايد شيوه تبديل را مشخص نمايد. تبديل انواع به يکديگر را می توان توسط سازنده تبديل انجام داد. اين تابع که تک آرگومانی می باشد، می تواند اشيايی از يک کلاس را به اشيايی از کلاس ديگر تبديل کند. در واقع هر سازنده تک آرگومانی می تواند به عنوان سازنده تبديل در نظر گرفته شود.

   عملگر تبديل نيز می تواند شيئی از کلاسی را به شيئی از کلاسی ديگر يا انواع اوليه تبديل نمايد. اين عملگر بايد به صورت تابع عضو تعريف شود. به دستور زير توجه نماييد:

  test::operator char* () const;

   دستور فوق يک يک تابع تبديل را گرانبار می نمايد. اين تابع يک شیء موقت از نوع *char را به شيئی از نوع ايجاد شده توسط کاربر با نام test تبديل می نمايد. همانطور که مشاهده می کنيد برای اين تابع نوع خروجی در نظر گرفته نشده است. در حقيقت عملگر تبديل نبايد نوع خروجی داشته باشد و نوع خروجی ، نوع شيئی می باشد که در حال تبديل است. مثلا اگر s شيئی از کلاس test در دستور بالا باشد هنگامی که کامپايلر به عبارت (char *) s برخورد می کند، فراخوانی s.operator char *() ايجاد می گردد.

myClass::operator int() const;
myClass::operator otherClass() const;

   دو دستور فوق به ترتيب عملگر تبديلی برای تبديل شيئی از کلاس myClass به يک عدد صحيح و دومی عملگر تبديلی برای تبديل شيئی از کلاس myClass به شيئی از کلاس ديگری با نام otherClass تعريف می کنند.

 

 

   معرفی کامپيوتروبرنامه نويسی

   ساختارهای کنترلی

   توابع

   آرايه ها

   اشاره گر ها و رشته ها

   کلاسها

   گرانبار کردن عملگر ها

 
 
 
   
 
 

حق کپی رایت محفوظ می باشد