السؤال بإختصار هو كيف يمكن انشاء constructor لفئه و يتم استدعائه فقط إذا كان الكائن الذى تم إنشائه من هذه الفئه const؟
بمعنى لنفترض ان لدى الفئه X كالتالى
class X
{
public:
X() : var(0) {}
X(int v) : var(0) {}
// const X(const int v) : cvar(v) {}
void increment() { ++var; }
private:
union
{
int var;
const int cvar;
};
};كما ترى من الكود السابق يوجد المشيد const X (عبارة عن comment)، اريد عندما يتم انشاء نسخة const من الفئه X ان يتم استدعاء constructor معين خاص بالنسخ الـ const؟ فهل توجد مثل هذه الخاصيه باللغه؟
int main()
{
const X test(10); // e.g. call const X(const int v) version
}تعبت من البحث فى الـ standard و على الإنترنت و لم اجد شئ.
السبب وراء بحثى عن هذه النقطه هو تعديل هام فى تصميم الفئه StringA حيث اذا كان الكائن المنشئ منها هو const و كذلك النص الذى تم تمريره لها هو const char* فبالتالى لا داعى من نسخه لمكان اخر حيث بشكل افتراضى المستخدم لا يريد تعديل النص و بالتلى لا حاجه لحجز مساحه اخرى من الذاكره له.
و الله ولى التوفيق