C ++:新しい演算子

1新しいオペレーターの目的

C++での使用新着オペレーターは、ヒープ領域にデータを割り当てます

知らせ:

  • ヒープ領域によって開発されたデータは、プログラマーによって手動で開発され、手動でリリースされ、オペレーターを使用してリリースされます消去

  • newによって作成されたデータは、データに対応するタイプへのポインタ

2文法

文法:new 数据类型

2.1基本構文

new 数据类型(值)

テストコード:

#include <iostream>
#include <string>

using namespace std;

//使用new在堆区分配一个int变量,并返回变量的指针
int* func1()
{
    
    
	int *a = new int(10);		//在堆区开辟一块内存,存放变量a,并初始化为10 

	return a;				//返回堆区中的指针变量
}

使用new在堆区分配一个string 变量,并返回变量的指针
string* func2()
{
    
    
	string *str = new string("Hellow World!");

	return str;
}


int main()
{
    
    
	int *p = func1();

	string *str = func2();

	cout << *p << endl;
	cout << *p << endl;
	cout << *str << endl;
	cout << *str << endl;

	//利用delete释放堆区数据
	delete p;

	//cout << *p << endl; //报错,被释放的空间不可访问
	cout << *str << endl;

	return 0;
}

出力結果:

10
10
Hellow World!
Hellow World!
Hellow World!

2.2新規およびアレイ

new 数据类型 [数组大小]

[]のサイズは整数である必要がありますが、定数である必要はありません。

テストコード:

Usenewは、ヒープ領域にサイズ10のint配列を割り当て、最初のintへのポインターを返します。

#include <iostream>

using namespace std;

int main()
{
    
    
	int* arr = new int[10];

	for (int i = 0; i < 10; i++)
	{
    
    
		arr[i] = i;
	}

	for (int i = 0; i < 10; i++)
	{
    
    
		cout << arr[i] << "  ";
	}
	cout << endl;

	//释放数组 delete 后加 []
	delete[] arr;

	return 0;
}

出力結果:

0  1  2  3  4  5  6  7  8  9

知らせ:

  • newで作成された配列は通常、動的ますが、配列型のオブジェクトを取得する代わりに、配列の要素型へのポインターを取得します。
  • 配列を解放した後に[]を追加します削除

おすすめ

転載: blog.csdn.net/weixin_46098577/article/details/122175524