亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++基礎入門教程(六):為什么創建類的時候要用new?

2020-01-26 15:11:25
字體:
來源:轉載
供稿:網友

今天是關于指針初步介紹的最后一篇,也是能讓初學者明白為什么類是new出來的、為什么某些變量會莫名被釋放,以及為什么木頭會這么聰明。

1.使用new創建動態結構體

還記得我們的結構體吧?之前說過,結構體也是可以通過new來創建存儲空間的,返回的是一個指向結構體類型空間的指針。

如下代碼:

復制代碼 代碼如下:

struct Man
    {
        int age;
        int IQ;
    };
    Man* pMan = new Man;
    pMan->IQ = 251;
    cout << pMan->IQ << "/n";
    cout << (*pMan).IQ << "/n";

定義一個結構體Man,然后使用new Man來動態創建內存空間,返回一個指針,這個指針指向一塊用于存放Man類型的內存空間。
然后調用pMan->IQ給屬性賦值,這里的“->”符號我們應該都很屬性吧。
 
稍微說明一下,如果不是用new來創建的對象,那么,應該使用.符號來使用屬性。
如果使用new創建的對象,則使用->符號來使用屬性。
 
但實際上,最終還是.符號,->符號只是語法糖。
因為pMan是指針,所以*pMan是指針所指內存空間上的對象值,于是,調用屬性是這樣的:(*pMan).IQ
但每次都這么調用,很麻煩,于是就有了pMan->IQ這種方便的形式。
 
所以,大家不要再搞混了.和->了~
一般情況,可以理解為,指針都使用->符號。
 
(這段文字感覺解釋地很糟糕,因為我旁邊有人在一直說話,我思緒不太安靜…)

2.為什么要有new?

為什么要有new?為什么要動態創建對象?為什么有時候不用new,有時候又用new,比如:

復制代碼 代碼如下:

// Cocos2d-x3.x的Value類,大家都很熟悉了
Value v = Value(100);
// Cocos2d-x的Sprite類,也很屬性了
Sprite* sp = new Sprite();


為什么有些地方不用new,有些地方又要new呢?
 
這就涉及到自動存儲和動態存儲了。

3.自動存儲(自動變量、局部變量)

自動存儲,也叫做自動變量,比如int num = 10; 這個num就屬于自動變量。
所謂自動,代表它會自動申請內存,也會自動釋放內存,自動變量是保存在棧里的(后進先出)。
 
如果大家覺得很難理解,那么,換一個名稱――局部變量。
這個好理解了吧?局部變量在離開函數,或者離開它所屬的代碼塊之后,就會被釋放。
 
而Value v = Value(100); 、int num = 10; 這些都是局部變量,一旦離開函數或者離開它的作用域,就會被釋放。
比如把int num; 作為成員變量,那么,在這個類被釋放的時候,num變量也會被釋放。
這就是為什么我們在創建了這么多int、float等基本類型的變量之后,不需要去釋放它們。
因為它們是自動被釋放的。

4.動態存儲

自動變量有很大的好處,那就是不需要我們去管內存方面的事情,但是,有時候我們不希望有這樣的自動釋放內存。

我們希望自己去控制什么時候釋放對象,這時候就要用到new了。

我們都知道,new了之后,如果不調用相應delete的話,申請到的內存空間是永遠都不會被釋放的。
這就是動態存儲了,我們自己來申請內存,自己來釋放內存。

當然,內存泄露的罪魁禍首之一也正是new~!

因為正常人都會有疏忽的時候,并且當程序足夠龐大、邏輯足夠復雜的時候,有些地方調用了new,卻疏忽了delete是再正常不過了。
 
當然,new的作用也許不僅于此,書上目前還沒深入介紹,我也不多說,免得說錯,畢竟C++還是需要嚴謹一些的~

我不敢亂吹水~

5.vector和array

相信不少初學者會被Cocos2d-x3.x的Vector給弄迷糊了。

Vector是Cocos2d-x封裝的一個類,而vector是C++里提供的一個類。

一個首字母大寫,一個首字母小寫,不要再弄錯喇~
 
C++的vector是一種動態數組的實現,我們都知道,數組在聲明的時候就要確定數組的大小,除非是使用new的方式。

vector就是使用new來申請內存的,但它已經封裝好了,不需要我們去處理內存釋放的問題。
 
vector的使用方式很簡單:

復制代碼 代碼如下:

// 可以在聲明的時候就進行初始化
    vector<int> v = {1, 2};
    // 可以動態地添加新的元素進去
    v.push_back(5);
    // 使用at來獲取某個元素
    cout << v.at(2);
    // 也可以像數組一樣獲取某個元素
    cout << v[2];

注意,使用vector要引入頭文件:#include <vector>
既然是動態數組,那就肯定可以動態添加和刪除元素。
獲取元素的方式有兩種,一種是使用at,這種方式比較安全,會檢查下標是否合法。
也可以使用普通數組的方式來獲取元素,這種方式比較危險,不會檢查下標是否合法。
 
好了,vector就不多說了~
 
另外還有一個array類,這是C++11新增的。
vector是動態數組,效率自然要遜色一些。
而普通數組使用起來可能不太方便和安全。
于是,array誕生了,array也是固定長度的數組,但是使用起來可能更方便和安全:

復制代碼 代碼如下:

array<int, 2> arr = { 1, 2 };
    cout << arr.at(1);

聲明的方式比較特別,需要制定數組類型和大小,因為是固定長度的數組,大小也是不能變的。
獲取元素的方式依舊有兩種,使用at或者普通數組的方式,兩種方式的區別和vector一樣。

6.結束

好了,書籍第四章的內容到這里就結束了。
這一章的內存比較雜亂,算是什么知識都介紹了一些吧,但都不太深入。
最近事很多,希望能繼續堅持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲美女又黄又爽在线观看| 一区二区三区无码高清视频| 国产999精品久久久影片官网| 亚洲欧美www| 国产免费一区二区三区香蕉精| 亚洲影院色在线观看免费| 精品女厕一区二区三区| 国产精品第七十二页| 亚洲人成伊人成综合网久久久| 久久人人爽国产| 一区二区三区视频免费在线观看| 亚洲成人激情在线| 韩国一区二区电影| 精品女同一区二区三区在线播放| 日韩av在线网站| 国产精品欧美日韩一区二区| 97在线视频一区| 一区二区三区视频观看| 亲爱的老师9免费观看全集电视剧| 国产成人激情视频| 91亚洲国产成人精品性色| 亚洲精品一区二区网址| 国产成人福利夜色影视| 日韩av在线网| 欧美在线亚洲一区| 欧美在线欧美在线| 欧美一区深夜视频| 亚洲97在线观看| 91夜夜未满十八勿入爽爽影院| 欧美大学生性色视频| 国产精品香蕉在线观看| 国产午夜精品久久久| 庆余年2免费日韩剧观看大牛| 亚洲成人在线视频播放| 国产精品日本精品| 亚洲精品福利在线| 情事1991在线| 日韩精品视频免费在线观看| 亚洲最大的av网站| 日韩激情第一页| 国产亚洲一区二区在线| 亚洲free性xxxx护士hd| 中文字幕日韩综合av| 久久精品亚洲精品| 日韩视频―中文字幕| 黑人与娇小精品av专区| 中文字幕日韩精品在线观看| 中文字幕亚洲第一| 日韩精品欧美激情| 国产成人精品免费视频| 国外成人在线播放| 国产亚洲精品久久久久久777| 国产精品久久激情| 久久国产精品久久久久久久久久| 91久久嫩草影院一区二区| 色偷偷91综合久久噜噜| 日韩中文字幕精品| 久久这里只有精品视频首页| 色偷偷av一区二区三区| 97超碰蝌蚪网人人做人人爽| 欧美一级淫片丝袜脚交| 色诱女教师一区二区三区| 国产精品久久久久7777婷婷| 中文字幕欧美亚洲| 日韩av在线免费看| 欧美精品www在线观看| 欧美黄色性视频| www亚洲欧美| 欧美精品电影在线| 欧美中文字幕在线播放| 亚洲国产精品成人av| 成人精品视频在线| 欧美激情一区二区三区久久久| 欧日韩不卡在线视频| 欧美精品videossex88| 成人精品视频99在线观看免费| 97久久伊人激情网| 日韩国产在线播放| 日韩高清中文字幕| 国产专区精品视频| 日韩欧美亚洲综合| 国产剧情日韩欧美| 精品亚洲国产成av人片传媒| 亚洲欧洲激情在线| 国产美女主播一区| 亚洲美女在线看| 色婷婷综合成人av| 亚洲日韩欧美视频一区| 中文字幕欧美精品在线| 欧美乱妇高清无乱码| 欧美性20hd另类| 国产精品久久久久久av| 在线视频欧美性高潮| 国产一区二区黑人欧美xxxx| 久久久久久亚洲精品不卡| 色综合91久久精品中文字幕| 日韩毛片在线看| 中文字幕av一区中文字幕天堂| 国内精品400部情侣激情| 狠狠躁夜夜躁人人爽天天天天97| 日韩中文字幕在线免费观看| 亚洲黄色av网站| 国产亚洲激情视频在线| 亚洲丝袜av一区| 欧美成年人网站| 日韩欧美国产激情| 亚洲欧美日韩一区二区三区在线| 欧美日韩xxxxx| 亚洲天堂免费视频| 另类美女黄大片| 亚洲欧美综合另类中字| 成人黄色av网| 日韩欧美福利视频| 欧美视频在线看| 精品亚洲国产视频| 国产精品久久国产精品99gif| 国产精品入口尤物| 91青草视频久久| 日韩专区在线播放| 日本高清久久天堂| 国产成人一区二区三区| 国产一区二区三区直播精品电影| 久久久www成人免费精品张筱雨| 国产精品色午夜在线观看| 91九色综合久久| 日韩人在线观看| 欧美精品18videos性欧| 欧美wwwxxxx| 亚洲精品之草原avav久久| 欧美放荡办公室videos4k| 精品久久久久久亚洲国产300| 欧美大胆在线视频| 久久久久久欧美| 欧美成人精品一区二区| 欧美一级黑人aaaaaaa做受| 国产免费一区二区三区在线能观看| 97成人精品区在线播放| 中文字幕亚洲综合久久筱田步美| 97国产精品免费视频| 亚洲男人的天堂在线播放| 亚洲区一区二区| 2018国产精品视频| 亚洲欧美国产va在线影院| 亚洲欧美国产另类| 深夜福利日韩在线看| 久久精品国产电影| 国产精品九九九| 55夜色66夜色国产精品视频| 精品欧美aⅴ在线网站| 91久久精品美女高潮| 欧美日韩裸体免费视频| 欧美精品在线免费播放| 日韩免费不卡av| 日韩久久精品电影| 午夜剧场成人观在线视频免费观看| 欧美黑人一级爽快片淫片高清| 欧美成人午夜激情| 96pao国产成视频永久免费| 亚洲激情 国产| 中文字幕少妇一区二区三区| 亚洲国产成人久久综合一区| 色妞在线综合亚洲欧美| 亚洲男人天堂九九视频| 国产精品久久久久久久久久99|