การใช้ตัวดำเนินการใหม่หมายถึงคำขอสำหรับการจัดสรรหน่วยความจำบนฮีป หากมีหน่วยความจำเพียงพอ หน่วยความจำจะเริ่มต้นหน่วยความจำและส่งคืนที่อยู่ไปยังตัวแปรพอยน์เตอร์
ตัวดำเนินการใหม่ควรใช้เฉพาะเมื่อวัตถุข้อมูลควรอยู่ในหน่วยความจำจนกว่าจะมีการเรียกลบ มิฉะนั้น หากไม่ได้ใช้ตัวดำเนินการใหม่ วัตถุจะถูกทำลายโดยอัตโนมัติเมื่ออยู่นอกขอบเขต กล่าวคือ ออบเจ็กต์ที่ใช้ 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;