در حالت کلی یا تبدیل در زمان کامپایل انجام میشه یا زمان اجرا. در C++
تبدیل در زمان کامپایل به اون معنی که در php
و javascript
داریم موجود نیست پس فقط تبدیل در زمان کامپایل رو در نظر میگیریم.
دو نوع تبدیل در زمان کامپایل امکان انجام شدن داره. تبدیل صریح که توسط دستور نوشته شده مثل static_cast
یا int(5.5)
یا مثل اون انجام میشه و تبدیل ضمنی که در حالتهای زیر اتفاق میافته
- یک عبارت موقع فراخوانی یک تابع به کار رفته باشه که نتیجهش به طور طبیعی از نوع T2 هست در صورتی که آرگومان تابع از نوع T1 اعلان شده باشه
- یک عبارت در یک عملگر به کار رفته باشه که نتیجهش به طور طبیعی از نوع T2 هست در صورتی که عملوند مورد استفاده از نوع T1 اعلان شده باشه.
برگرداندن یک شی از نوع T2 از تابع یا مقداردهی اولیه.
استفاده از شی از نوع T2 در عبارت یک دستور switch.
- استفاده از شی از نوع T2 در عبارت یک دستور شرطی if یا حلقه.
در صورتی که تبدیل نتونه انجام بشه برنامه کامپایل نخواهد شد.
هیچ پژوهش انسانی نمیتواند ادعای علمی بودن داشته باشد، مگر اینکه از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)