日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Cpp 对象模型探索 / new 对象时加括号和不加括号时的差别

發(fā)布時(shí)間:2024/10/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Cpp 对象模型探索 / new 对象时加括号和不加括号时的差别 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、結(jié)論

CTest *pt1 = new CTest(); CTest* pt2 = new CTest;

1、若類 CTest 是空類,則二者?new 的結(jié)果沒(méi)有區(qū)別。

2、若類存在顯示聲明的缺省的構(gòu)造函數(shù),則二者 new 的結(jié)果沒(méi)有區(qū)別。

3、若類沒(méi)有顯示聲明的缺省的構(gòu)造函數(shù),即使編譯器為類創(chuàng)建了缺省的構(gòu)造函數(shù),二者的結(jié)果依然不一樣。帶括號(hào)的結(jié)果是會(huì)將 pt1 的 count_ 初始化為0,而不帶括號(hào)的結(jié)果是不初始化?count_ 。

二、驗(yàn)證

1、對(duì)于空類,其對(duì)象只占1B,兩種申請(qǐng)方式?jīng)]有區(qū)別。

2、對(duì)于類存在顯示聲明的缺省的構(gòu)造函數(shù),兩種 new 的時(shí)候都會(huì)調(diào)用該構(gòu)造函數(shù),所以對(duì)于 new 的結(jié)果沒(méi)有影響。

#include <iostream>class CTest { public:CTest(){count_ = 0;} public:size_t count_; };int main() {CTest *pt1 = new CTest();CTest* pt2 = new CTest;std::cout << "()::count_ = " << pt1->count_ << std::endl;std::cout << "count_ = " << pt2->count_ << std::endl;std::cin.get();return 0; }

結(jié)果

()::count_ = 0 count_ = 0

?3、對(duì)于沒(méi)有顯式聲明構(gòu)造函數(shù)的類,即使編譯器自動(dòng)生成了一個(gè)構(gòu)造函數(shù),二者 new 的結(jié)果也是不同的。帶括號(hào)的 new 會(huì)對(duì)類中成員變量進(jìn)行初始化,而不帶括號(hào)的 new 則不采取任何操作。

#include <iostream>class CTest { public:size_t count_; public:virtual void func(){} };int main() {CTest *pt1 = new CTest();CTest* pt2 = new CTest;std::cout << "()::count_ = " << pt1->count_ << std::endl;std::cout << "count_ = " << pt2->count_ << std::endl;std::cin.get();return 0; }

結(jié)果

()::count_ = 0 count_ = 3452816845

?

(SAW:Game Over!)

總結(jié)

以上是生活随笔為你收集整理的Cpp 对象模型探索 / new 对象时加括号和不加括号时的差别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。