هل تؤثر الأقواس بعد اسم النوع في عامل 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)` — فهذا يحدد القيمة بوضوح، أليس كذلك؟ شكراً مسبقاً!