Avatar ·

هل تؤثر الأقواس بعد اسم النوع في عامل new على التهيئة؟

مرحباً بالجميع! بدأت تعلم لغة C++ وواجهت نقطة غير مفهومة. عندما نخصص ذاكرة باستخدام `new`، غالباً ما أرى صيغتين: ```cpp int* p1 = new int; // بدون أقواس int* p2 = new int(); // مع أقواس ``` أو للكلاسات: ```cpp MyClass* obj1 = new MyClass; MyClass* obj2 = new MyClass(); ``` يبدو أنه لا فرق، لكنني سمعت في مكان ما أنه للأنواع المضمنة (int, double, إلخ) قد تؤثر الأقواس على التهيئة. جربت مثالاً بسيطاً: ```cpp #include int main() { int* a = new int; int* b = new int(); std::cout << *a << " " << *b; // أحياناً يطبع قيمة غير محددة و0 delete a; delete b; return 0; } ``` بالفعل، `*a` يظهر قيمة غريبة، بينما `*b` دائماً صفر. لماذا يحدث هذا؟ وهل هذا مهم أيضاً للكلاسات؟ اشرحوا لي، من فضلكم، كيف تعمل التهيئة مع `new` بدون أقواس. وماذا يحدث إذا كتبت `new int(42)` — فهذا يحدد القيمة بوضوح، أليس كذلك؟ شكراً مسبقاً!

لا توجد إجابات بعد.

تسجيل الدخول لترك إجابة

المدونات