25 下列以 C++語言撰寫的程式編譯及執行後的輸出為何?
 
(A)P
(B)空白無輸出
(C)程式發生執行錯誤
(D)程式無法通過編譯

答案:登入後查看
統計: A(71), B(115), C(63), D(52), E(0) #852258

詳解 (共 8 筆)

#3086612
使用new才能觸發建構子印出P
(共 17 字,隱藏中)
前往觀看
4
1
#1163644
main() 函式中, 並沒有任何要 "輸出" 的敍述

4
5
#1117337
free(p)將p還原成0了
3
4
#5085270
5F 建立就會了 不需要new也會呼叫建...
(共 49 字,隱藏中)
前往觀看
1
0
#5622502

malloc與free是C++/C語言的標準庫函式,new/delete是C++的運算子。它們都可用於申請動態記憶體和釋放記憶體

當我們使用new建立新物件時,程式會自動執行建構函式。建構式/建構函式/建構子(Constructor)

物件在建立的同時要自動執行建構函式,物件在消亡之前要自動執行解構函式。由於malloc/free是庫函式而不是運算子,不在編譯器控制權限之內,不能夠把執行建構函式和解構函式的任務強加於malloc/free

new可以認為是malloc加建構函式的執行。new出來的指標是直接帶型別資訊的。而malloc返回的都是void*指標 

重點 : new 建立的是一個物件;alloc分配的是一塊記憶體.

 
經實測,new 確實會呼叫建構子/建構函式
633675e5c5bd0.jpg
 大全在這邊

1
0
#1103161
有人能說明嗎?

0
0
#1117338
P*p=0
0
3
#3660455
P() { cout <&...
(共 68 字,隱藏中)
前往觀看
0
0

私人筆記 (共 1 筆)

私人筆記#3548971
未解鎖
*p動態配置一個位置但不呼叫建構函式ne...
(共 25 字,隱藏中)
前往觀看
0
0