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

首頁 > 學院 > 開發設計 > 正文

C++子對象和堆對象

2019-11-17 05:10:24
字體:
來源:轉載
供稿:網友
  子對象

  當一個類的成員是某一個類的對象時,該對象就為子對象。子對象實際就是對象成員。如:

class A
{
 public:
  …
 PRivate:
  …
};
class B
 {
  public:
   …
  private:
   A a;
   …
 };

  其中,B類中成員a就是子對象,它是A類的對象作為B類的成員。

  在類中出現了子對象或稱對象成員時,該類的構造函數要包含對子對象的初始化,通常采用成員初始化表的方法來初始化子對象。在成員初始化表中包含對子對象的初始化和對類中其他成員的初始化。下面舉一例子說明成員初始化的構造。

#include

class A
{
public:
A(int i, int j) { A1=i; A2=j; }
void print() { cout< private:
int A1, A2;
};

class B
{
public:
B(int i, int j, int k):a(i, j), b(k)
{
}
void print();
private:
A a; file://子對象
int b;
};

void B::print()
{
a.print();
cout< }

void main()
{
B b(6, 7, 8);
b.print();
}

  該程序的輸出結果為:

  6,7
  8

  其中,a(i, j), b(k)是成員初始化表,它有二項,前一項是給子對象a初始化,其格式如下:

   <子對象名> (<參數表>)

  后一項是給類B的數據成員b初始化。這一項也可以寫在構造函數的函數體內,使用賦值表達式語句

   b = k;

  給類B的數據成員初始化。 更多文章 更多內容請看C/C++技術專題專題,或
  堆對象

  所謂堆對象是指在程序運行過程中根據需要隨時可以建立或刪除的對象。這種堆對象被創建在內存一些空閑的存儲單元中,這些存儲單元被稱為堆。它們可以被創建的堆對象占有,也可以通過刪除堆對象而獲得釋放。

  創建或刪除堆對象時,需要如下兩個運算符:

   new

   delete

  這兩個運算符又稱為動態分配內存空間運算符。new相當于C語言中malloc()函數,而delete相當于C語言中free()函數。

  1. 運算符new的用法

  該運算符的功能是用來創建堆對象,或者說,它是用來動態地創建對象。

  new運算符使用格式如下:

  new <類型說明符> (<初始值列表>)

  它表明在堆中建立一個由<類型說明符>給定的類型的對象,并且由括號中的<初始值列表>給出被創建對象的初始值。假如省去括號和括號中的初始值,則被創建的對象選用缺省值。

  使用new運算符創建對象時,它可以根據其參數來選擇適當的構造函數,它不用sizeof來計算對象所占的字節數,而可以計算其大小。

  new運算符返回一個指針,指針類型將與new所分配對象相匹配,假如不匹配可以通過強制類型的方法,否則將出現編譯錯。

  假如new運算符不能分配到所需要的內存,它將返回0,這時的指針為空指針。

  運算符new也可以用來創建數組類型的對象,即對象數組。其格式如下:

   new <類名> [<算術表達式>]

  其中,<算術表達式>的值為所創建的對象數組的大小。如:

   A *ptr;
   ptr = new A[5];

  new還可用來創建一般類型的數組。如:

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

  使用new[]創建的對象數組或一般數組時,不能為該數組指定初始值,其初始值為缺省值。

  2. 運算符delete的用法

  該運算符的功能是用來刪除使用new創建的對象或一般類型的指針。其格式如下:

   delete <指針名>

  例如:

   A *ptr;
   ptr = new A(5, 6);
   delete ptr;

  運算符delete也可用來刪除使用new創建對象數組,其使用格式如下:

   delete[] <指針名>

  同樣,delete也可以刪除由new創建的一般類型的數組。如:

   int *p;
   p = new int[10];
   delete[] p;

  使用運算符delete時,應注重如下幾點:

   (1) 它必須使用于由運算符new返回的指針;

   (2) 該運算符也適用于空指針(即其值為0的指針);

   (3) 指針名前只用一對方括號符,并且不管所刪除數組的維數,忽略方括號內的任何數字。

  下面舉一例子說明new運算符和delete運算符的使用方法。


#include

class AA
{
public:
AA(int i, int j)
{
A=i; B=j;
cout<<"構造函數./n";
}
~AA() { cout<<"析構函數./n"; }
void print();
private:
int A, B;
};

void AA::print()
{
cout< }

void main()
{
AA *a1, *a2;
a1 = new AA(1, 2);
a2 = new AA(5, 6);
a1->print();
a2->print();
delete a1;
delete a2;
}

   該程序的輸出結果為:

    構造函數.
    構造函數.
    1, 2
    5, 6
    構造函數.
    構造函數.

  從程序中可以看到:用new創建對象時,要調用構造函數,用delete刪除對象時,要調用析構函數。假如創建或刪除的時對象數組,對象數組有多少,就調用多少次構造函數或構造函數。

  在實際應用中,經常對于new運算符返回的指針進行檢驗,看是否分配了有效的內存空間。結合本例給出檢驗方法如下:

  if (!a1)
   {
    cout<<"Heap erroe!/n";
    exit(1);
   }

  下面再舉一個使用new和delete運算符對一般指針和數組的例子。

#include
#include

void fun()
{
int *p;
if (p = new int)
{
*p = 5;
cout<<*p< delete p;
}
else
cout<<"Heap error!/n";
}

void main()
{
fun();
int *pa;
pa = new int[5];
if (!pa)
{
cout<<"Heap error!/n";
exit(1);
}
for (int i=0; i<5; i++)
pa[i] = i+1;
for (i=0; i<5; i++)
cout<<pa[i]<<" ";
cout< delete[] pa;
}
更多文章 更多內容請看C/C++技術專題專題,或

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
九九久久久久99精品| 久久伊人91精品综合网站| 91香蕉嫩草影院入口| 国产精品入口尤物| 国产成人av在线播放| www.欧美三级电影.com| 91麻豆国产精品| 欧美亚洲国产精品| 久青草国产97香蕉在线视频| 国产大片精品免费永久看nba| 精品人伦一区二区三区蜜桃网站| 国产精品一区=区| 亚洲成色777777女色窝| 欧美高清第一页| 日韩中文字幕免费看| 欧美在线观看www| 综合国产在线视频| 国产精品网站入口| 国产精品九九九| 国产成人久久久精品一区| 亚洲一区二区三区乱码aⅴ蜜桃女| 91精品视频在线播放| 久久久久中文字幕2018| 一区二区三区动漫| 一区二区三区亚洲| 亚洲精品国产综合区久久久久久久| 1769国内精品视频在线播放| 亚洲精品电影网在线观看| 亚洲国产成人精品一区二区| 国产精品视频999| 国产精品视频精品| 亚洲一区二区三区成人在线视频精品| 亚洲欧美国产精品va在线观看| 夜夜狂射影院欧美极品| 91精品久久久久久久久青青| 中日韩美女免费视频网址在线观看| 国产精品草莓在线免费观看| 国产精品27p| 欧美日韩亚洲高清| 97在线视频免费看| 国产日韩视频在线观看| 国产精品美女免费视频| 97国产精品视频人人做人人爱| 欧美激情二区三区| 国产美女精品视频免费观看| 色婷婷综合成人| 日韩最新中文字幕电影免费看| 精品高清一区二区三区| 欧美综合在线第二页| 精品日韩视频在线观看| 欧美亚洲成人精品| 91经典在线视频| 欧美日韩中文字幕| 欧美日韩中文字幕在线| 精品久久国产精品| 国产精品自产拍在线观看| 91在线高清免费观看| 福利视频导航一区| 亚洲精品视频二区| 4p变态网欧美系列| 亚洲欧洲日产国码av系列天堂| 青青草99啪国产免费| 2019中文字幕在线| 中文字幕亚洲一区| 中文字幕久精品免费视频| 国产精品美女www爽爽爽视频| 亚洲国产精久久久久久久| 亚洲成人a级网| 日韩美女免费视频| 亚洲欧洲自拍偷拍| 精品综合久久久久久97| 精品久久久999| 久久久这里只有精品视频| 亚洲欧洲午夜一线一品| 亚洲一区久久久| 庆余年2免费日韩剧观看大牛| 欧美午夜精品久久久久久浪潮| 欧美日韩一二三四五区| 欧美福利视频在线| 欧美激情精品久久久| 日韩av影院在线观看| 亚洲欧洲国产精品| 日韩成人在线播放| 亚洲国产成人久久| 午夜精品美女自拍福到在线| 欧美激情第三页| 热99精品只有里视频精品| 中文字幕日韩欧美| 欧美日韩亚洲激情| 国产一区私人高清影院| 精品视频中文字幕| 亚洲一区二区三区sesese| 亚洲精品视频在线观看视频| 九九久久国产精品| 狠狠躁夜夜躁人人爽天天天天97| 欧美日韩成人网| 日韩精品中文字幕久久臀| 国产mv免费观看入口亚洲| 亚洲国产精品视频在线观看| 欧美激情在线观看| 日韩精品电影网| 色青青草原桃花久久综合| 操日韩av在线电影| 久久久精品2019中文字幕神马| 黑人巨大精品欧美一区二区三区| 日韩免费观看在线观看| 成人黄色片网站| 久热精品视频在线免费观看| 久久91精品国产91久久久| 国产日韩欧美在线观看| 美女精品久久久| 97av在线视频| 亚洲伊人一本大道中文字幕| 日本欧美一二三区| 精品在线观看国产| 亚洲人成电影网站色xx| 国内精品久久影院| 91精品国产91久久久久久最新| 久久久久久网站| 久久精品电影一区二区| 亚洲午夜色婷婷在线| 97国产一区二区精品久久呦| 国产亚洲精品成人av久久ww| 欧美亚洲另类在线| 精品国产91久久久| 日韩中文字幕免费| 精品亚洲国产成av人片传媒| 日韩麻豆第一页| 亚洲性生活视频在线观看| 成人国产精品久久久| 久久国产精品免费视频| 精品日韩中文字幕| 成人午夜在线视频一区| 久久久久久久97| 操人视频在线观看欧美| 亚洲精品电影网在线观看| 欧美精品videos另类日本| 午夜精品视频网站| 在线观看欧美成人| 亚洲欧洲第一视频| 日韩成人网免费视频| 好吊成人免视频| 欧美精品一区二区三区国产精品| 91视频8mav| 九九精品在线视频| 亚洲精品国精品久久99热一| 日韩av片免费在线观看| 欧美成人一区二区三区电影| 亚洲天堂免费观看| 日本欧美国产在线| 亚洲美女黄色片| 色综合久久天天综线观看| 国产精品xxx视频| 国产精品99久久久久久www| 日韩av日韩在线观看| 国产精品女视频| 欧美噜噜久久久xxx| 日韩精品小视频| 国产精品日本精品| 亚洲欧美一区二区精品久久久| 亚洲国产欧美一区| 91精品国产91久久久久福利| 日韩一区在线视频| 成人免费直播live|