به صورت دقیق خیر. تبدیل ضمنی تبدیلی هست که در زمان کامپایل در موردش تصمیم گرفته میشه.
اما میشه به گونهای کار کرد که از تبدیلهای ضمنی پیادهشده طوری استفاده بشه که برای نوع دادهی تعریف شده توسط ما نیز تبدیل ضمنی به وجود بیاد. مثلاً فرض کنیم یک شی داریم که با سازندهای به صورت class(int)
ساخته میشه. در این صورت class boj(12.4)
تبدیل ضمنیای انجام میده و از سازندهی کلاس استفاده میکنه.
یه کار بهتر هم سربارگذاری کردن operator=
برای دادههایی هست که قراره تبدیل ضمنی براشون انجام بشه. مثلاً
const class& operator=(int x){ ... }
const class& operator=(float y){ ... }
بنابراین کد زیر انگار که داره یه تبدیل ضمنی انجام میده
class obj;
obj = 2;
obj = 4.5;
برای عملگرهای دیگه هم میشه به همین صورت عمل کرد
class X
{
public:
const X& operator+(int x){ ... }
}
در این صورت کد زیر به صورت یه تبدیل عمل میکنه
X obj, res;
res = obj + 2;
هیچ پژوهش انسانی نمیتواند ادعای علمی بودن داشته باشد، مگر اینکه از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)