Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เมื่อใดควรใช้โอเปอเรเตอร์ใหม่ใน C ++ และไม่ควรใช้เมื่อใด


การใช้ตัวดำเนินการใหม่หมายถึงคำขอสำหรับการจัดสรรหน่วยความจำบนฮีป หากมีหน่วยความจำเพียงพอ หน่วยความจำจะเริ่มต้นหน่วยความจำและส่งคืนที่อยู่ไปยังตัวแปรพอยน์เตอร์

ตัวดำเนินการใหม่ควรใช้เฉพาะเมื่อวัตถุข้อมูลควรอยู่ในหน่วยความจำจนกว่าจะมีการเรียกลบ มิฉะนั้น หากไม่ได้ใช้ตัวดำเนินการใหม่ วัตถุจะถูกทำลายโดยอัตโนมัติเมื่ออยู่นอกขอบเขต กล่าวคือ ออบเจ็กต์ที่ใช้ new จะถูกล้างด้วยตนเอง ขณะที่อ็อบเจ็กต์อื่นจะถูกล้างโดยอัตโนมัติเมื่ออยู่นอกขอบเขต

ต่อไปนี้เป็นไวยากรณ์ของตัวดำเนินการใหม่

pointer_variable = new datatype;

ในไวยากรณ์ข้างต้น pointer_variable คือตัวแปรตัวชี้ที่ส่งที่อยู่หน่วยความจำกลับมา และประเภทข้อมูลเป็นประเภทข้อมูลบิวด์อินสำหรับหน่วยความจำ

มีโปรแกรมสาธิตการใช้งานโอเปอเรเตอร์ใหม่ดังนี้

ตัวอย่าง

#include <iostream>
using namespace std;
int main () {
   int *ptr1 = NULL;
   ptr1 = new int;
   float *ptr2 = new float(223.324);
   *ptr1 = 28;
   cout << "Value of pointer variable 1 : " << *ptr1 << endl;
   cout << "Value of pointer variable 2 : " << *ptr2 << endl;
   delete ptr1;
   delete ptr2;
   return 0;
}

ผลลัพธ์

ผลลัพธ์ของโปรแกรมข้างต้นมีดังนี้

Value of pointer variable 1 : 28
Value of pointer variable 2 : 223.324

ตอนนี้เรามาทำความเข้าใจโปรแกรมข้างต้นกัน

ตัวดำเนินการใหม่ใช้เพื่อเริ่มต้นหน่วยความจำและส่งคืนที่อยู่ไปยังตัวแปรตัวชี้ ptr1 และ ptr2 จากนั้นค่าที่เก็บไว้ที่ตำแหน่งหน่วยความจำที่ชี้ไปที่ ptr1 และ ptr2 จะปรากฏขึ้น ในที่สุดตัวดำเนินการลบก็ถูกใช้เพื่อเพิ่มหน่วยความจำ

ข้อมูลโค้ดที่แสดงสิ่งนี้มีดังนี้ -

int *ptr1 = NULL;
ptr1 = new int;
float *ptr2 = new float(223.324);
*ptr1 = 28;
cout << "Value of pointer variable 1 : " << *ptr1 << endl;
cout << "Value of pointer variable 2 : " << *ptr2 << endl;
delete ptr1;
delete ptr2;