Computer >> Máy Tính >  >> Lập trình >> C ++

Vị trí toán tử mới trong C ++

Trong phần này, chúng ta sẽ xem toán tử mới của vị trí trong C ++ là gì. Vị trí mới này là một biến thể khác của toán tử mới. Toán tử mới bình thường thực hiện hai điều. Nó cấp phát bộ nhớ, và sau đó xây dựng một đối tượng trong bộ nhớ được cấp phát.

Toán tử mới cấp phát bộ nhớ trong phần heap và xây dựng các đối tượng ở đó. Nhưng đối với toán tử new vị trí, nó xây dựng đối tượng tại địa chỉ đã cho. Để phân bổ bộ nhớ, chúng tôi có thể sử dụng xóa từ khóa nếu bộ nhớ được cấp phát bằng cách sử dụng toán tử mới. Nhưng đối với vị trí mới không có xóa vị trí tính năng.

Tóm lại, vị trí mới cho phép bạn "xây dựng" một đối tượng trên bộ nhớ đã được cấp phát cho một biến nhất định. Điều này rất hữu ích cho việc tối ưu hóa vì việc không phân bổ lại và sử dụng lại chính bộ nhớ đã được gán cho nó sẽ nhanh hơn. Nó có thể được sử dụng như sau:

new (address) (type) initializer

Chúng ta có thể chỉ định một địa chỉ mà chúng ta muốn một đối tượng mới của kiểu đã cho được xây dựng. Ví dụ.

Mã mẫu

#include<iostream>
using namespace std;
int main() {
   int a = 5;
   cout << "a = " << a << endl;
   cout << "&a = " << &a << endl;
   // Placement new changes the value of X to 100
   int *m = new (&a) int(10);
   cout << "\nAfter using placement new:" << endl;
   cout << "a = " << a << endl;
   cout << "m = " << m << endl;
   cout << "&a = " << &a << endl;
   return 0;
}

Đầu ra

a = 5
&a = 0x22fe34
After using placement new:
a = 10
m = 0x22fe34
&a = 0x22fe34