關於C 中的New關鍵字的語法

2021-04-18 11:51:47 字數 5592 閱讀 2706

1樓:匿名使用者

不傳遞引數時,兩種寫法是一樣的.但如果要傳遞引數,或者建構函式必須要傳遞引數時,必須寫成new a(x,y)的形式

2樓:哀傷の霜之哀傷

a *a = new a;表示申請一個sizeof a的空間

a *a = new a(x);表示申請x個大小為sizeof a的空間你沒寫編譯器預設為1;

謝謝採納

3樓:匿名使用者

這裡其實是呼叫一個建構函式~ 如果建構函式裡面沒有引數 這倆之間沒區別。

如果有引數 必須a(引數)

4樓:匿名使用者

那個括號是與建構函式有關,若建構函式有引數則需要使用。

5樓:匿名使用者

newlife9090 正解。

二樓在胡扯。

c++語言中,new表示什麼的關鍵字?

c++中,關於new關鍵字的使用!

6樓:匿名使用者

簡單地說,前者物件例項的生成和銷燬由系統自動控制,後者例項的生成和銷燬由程式設計師自己控制。

7樓:匿名使用者

3. 在事先不能判斷將要使用多少記憶體時。這主要是分配一組物件,如果只要單個物件,不需要使用。

如果事先不知道會不會使用一個物件,可以先只宣告一個指標,在需要用的時候在用new分配空間。

4 不用new,也可能在好幾個地方分配記憶體,比如堆疊,靜態儲存區等等。

5. new和delete必需成對使用,否則會造成所謂的記憶體洩漏。

c++中new的用法

8樓:老表有點呈

c++中new運算子用於動態分配和撤銷記憶體的運算子。

1、開闢單變數地址空間

new int;  //開闢一個存放陣列的儲存空間,返回一個指向該儲存空間的地址.int *a = new int 即為將一個int型別的地址賦值給整型指標a. 2)int *a = new int(5) 作用同上,但是同時將整數賦值為5。

2、開闢陣列空間

要訪問new所開闢的結構體空間,無法直接通過變數名進行,只能通過賦值的指標進行訪問。用new可以動態開闢,撤銷地址空間。在程式設計序時,若用完一個變數,下次需要再用,可以在每次開始使用時開闢一個空間,在用完後撤銷它。

9樓:手機使用者

new int;//開闢一個存放整數的儲存空間,返回一個指向該儲存空間的地址(即指標)

new int(100);//開闢一個存放整數的空間,並指定該整數的初值為100,返回一個指向該儲存空間的地址

new char[10];//開闢一個存放字元陣列(包括10個元素)的空間,返回首元素的地址

new int[5][4];//開闢一個存放二維整型陣列(大小為5*4)的空間,返回首元素的地址

float *p=new float (3.14159);//開闢一個存放單精度數的空間,並指定該實數的初值為//3.14159,將返回的該空間的地址賦給指標變數p

new運算子使用的一般格式為   new 型別 [初值]   用new分配陣列空間時不能指定初值。如果由於記憶體不足等原因而無法正常分配空間,則new會返回一個空指標null,使用者可以根據該指標的值判斷分配空間是否成功。

delete運算子使用的一般格式為   delete [ ] 指標變數

例如要撤銷上面用new開闢的存放單精度數的空間(上面第5個例子),應該用   delete p;

前面用「new char[10];」開闢的字元陣列空間,如果把new返回的指標賦給了指標變數pt,則應該用以下形式的delete運算子撤銷該空間:

delete pt;//在指標變數前面加一對方括號,表示是對陣列空間的操作

例 開闢空間以存放一個結構體變數。

#include

#include

using namespace std;

struct student //宣告結構體型別student

;int main( )

執行結果為   wang fun 10123 m

10樓:幸運夕夕

c++中new的用法有三種,具體如下:

一、new operator,也叫new表示式;new表示式比較常見,也最常用,例如:

上面這個new表示式完成了兩件事情:申請記憶體和初始化物件。

二、operator new,也叫new操作符。這兩個英文名稱起的也太絕了,很容易搞混,那就記中文名稱吧。new操作符類似於c語 言中的malloc,只是負責申請記憶體,例如:

注意: 這裡多了一個operator。這是new的第二個用法,也算比較常見吧。

三、placement new,它用於在給定的記憶體中初始化物件,也就是說你手中已有一塊閒置的記憶體,例如:

那麼現在buffer是你所擁有閒置記憶體的指標buffer = new(buffer) string("abc"); //呼叫了placement new,在buffer所指向的記憶體中初始化string型別的物件,初始值是"abc",事實上,placement new也是new表示式的一種,但是比普通的new表示式多了一個引數,當然完成的操作和返回值也不同。

因此上面new的第一種用法可以分解兩個 動作,分別為後面的兩種用法。

注意:1、使用者是無法主動呼叫建構函式的,所以需要藉助placement new,但是使用者可以主動呼叫解構函式,所以用完這些物件後,呼叫解構函式,然後用對應分配記憶體的方法去釋放記憶體。

2、事實上malloc並不一定比operatornew節省多少時間,用placement new常常是為了考慮效能,所以會配合記憶體池一起使用。

11樓:匿名使用者

new的功能是動態分配記憶體。

語法就是 new 型別名t(初值列表)

12樓:

new 的作用是動態開闢空間,一般的形式估計你也會了。我就直接給你講題吧

你這個函式的作用是動態建立一個(n1+1)*(n2+1)的二維陣列(注:在c++中 直接用new(a)這種形式是錯誤的)

首先明白所謂指標就是存放地址的變數,這一點最重要double **a=new double*[n1+1];

這句話的意思是開闢以一塊連續的空間用來儲存指標變數(指標的指標),它的大小是n1+1。*a是指標,那麼**a就是存放指標的指標。那個new後的double* 相當於一個強制轉換。

因為用new時和陣列的名字無關所以[n1+1]前的陣列名可以省略。這個類比於new double[3];

for(i=0;i<=n1;i++)

這個語句就是給把指標付給指標的指標,看下邊的圖你就明白了;

多琢磨一下!

13樓:有界函式

推薦你看一下effictive c++,這裡面有單獨的一節是講 new 的。細緻的講不了,可以自己去看看。

使用c++中的new關鍵字建立物件要不要加()

14樓:匿名使用者

new 一個類或者結構體的話,實際上就是呼叫了他的無引數建構函式。

加上括號,指名了呼叫類的無引數的建構函式 ;括號內加引數的話,就是呼叫其他帶引數的類的建構函式了。

總結:不到括號的比較簡潔,但是有一定侷限性,無法帶引數例項化一個類。

15樓:咖啡色的肌膚

要,這是呼叫建構函式

new 一個類或者結構體的話,實際上就是呼叫了他的無引數建構函式。

加上括號,指名了呼叫類的無引數的建構函式 ;括號內加引數的話,就是呼叫其他帶引數的類的建構函式了。

16樓:平底鍋

如果你呼叫的是無引數的建構函式 加不加都沒關係,

17樓:高樓尋縫

取決於類的建構函式。如果建構函式為有引數,那麼new 後的括號中要有相應的引數。

如果是無參的建構函式,那麼有無括號都行。

18樓:雲中凌

要,這是呼叫建構函式,你的建構函式是public:example(){}

關於c++中new語句的使用方法~~

19樓:匿名使用者

3: int *p=new int [10];

004010e8 6a 28 push 28h//記憶體

的大小10*4

004010ea e8 21 00 00 00 call operator new (00401110)

004010ef 83 c4 04 add esp,4

00401110 55 push ebp

00401111 8b ec mov ebp,esp

00401113 51 push ecx

00401114 6a 01 push 1//_nh_malloc引數2

00401116 8b 45 08 mov eax,dword ptr [cb]

00401119 50 push eax//_nh_malloc引數1

0040111a e8 e1 3b 00 00 call _nh_malloc (00404d00)//呼叫_nh_malloc申請記憶體

0040111f 83 c4 08 add esp,8

00401122 89 45 fc mov dword ptr [res],eax//把_nh_malloc的返回值給[res]

00401125 8b 45 fc mov eax,dword ptr [res]//返回申請記憶體的指標

00401128 8b e5 mov esp,ebp

0040112a 5d pop ebp

0040112b c3 ret//返回

呼叫過程可以看成這樣:

new[4*10]->_nh_malloc(40, 1)->返回申請的指標

res這個是vc6.0反彙編後給出的變數名,其實它是一個區域性變數

push ecx //這句就是申請res的記憶體的 相當sub esp, 4

00401122 89 45 fc mov dword ptr [res],eax//把_nh_malloc的返回值給[res]

00401125 8b 45 fc mov eax,dword ptr [res]//返回申請記憶體的指標

為什麼會產生產生上面的2句**?

因為這個是除錯模式的編譯,**沒有優化,所以才會產生這樣的問題

等於 >

java中this關鍵字的作用是什麼

this的作用是在類中通過this訪問自身的屬性和方法。比如 public class myclass public void show int a 通常指自己 也就是代表呼叫當前方法的物件自己 比如class a裡面有一個test 方法 中有一個this關鍵字 它代表的就是class a 例項化之...

VB查詢含關鍵字的檔案100)

提供一個思路 先查詢c盤下的所有txt 找到後進去遍歷所有檔案找 ww 如果不用vb,用批處理更快。dir s c txt 1.txt b 把所有的文字檔案都輸出到1.txt內。在用for find 命令遍歷1.txt檔案內所有的檔案。具體的自己想下 只能自己寫程式了。原來不難,就是把所有txt檔案...

上如何提取關鍵字保留EXCEL同樣的行

1 在自j列做輔助列,如圖,j2設定公式向下複製 if countif d2 i2,機械工程 max j 1 j1 1,2 在sheet2輸入以下公式,即可 將包含機械工程的所有行篩選出來 if row 1 1 max sheet1 j j lookup row 1 1 sheet1 j j,she...