السلام عليكم ورحمة الله تعالى وبركاته
وجدت هذا المثال حول الكلمة explicit وأردت مشاركته معكم
الكل يعلم أن أي صنف في يحوي دال بناء لهذا الصنف ويمكن لدالة البناء أن تأخذ parameter أو أكثر ويمكن أن نستخدم الدالة للتحويل بين الأنماط مثال
class A {
public:
A(int);
};
void f(A) {}
void g()
{
A a1 = 37;
A a2 = A(47);
A a3(57);
a1 = 67;
f(77);
}ولجعل دالة البناء في المثال الماضي لا تقوم بتحويل النمط نستخدم الكلمة المفتاحية كما يلي
class A {
public:
explicit A(int);
};
void f(A) {}
void g()
{
A a1 = 37; // illegal
A a2 = A(47); // OK
A a3(57); // OK
a1 = 67; // illegal
f(77); // illegal
}وهي تشبه السطر التالي
float a = 3.14...... int s = int (a)
ولكن هناك سؤال يحيرني لماذا سأستخدم explicit أليس من الأفضل عدم استخدامها نهائيا ؟؟؟؟ وماهي استخداماتها ننتظر الخبراء


