<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      C++多態(tài)與虛擬:Objects 實(shí)例化(Objects Instantiation)探究

      一、Objects的創(chuàng)建 

        依據(jù)已有的class CPoint ,我們可以產(chǎn)生一個(gè)或多個(gè)object(對(duì)象),或者說是產(chǎn)生一個(gè)instance(實(shí)體):

      CPoint aPoint(7.2); // aPoint._x 初始值為 7.2
      aPoint.x(5.3); // aPoint._x 現(xiàn)值為 5.3

        這樣的objects可能放在函數(shù)的stack之中(對(duì)象是在函數(shù)內(nèi)部創(chuàng)建的,例如在函數(shù)的作用域內(nèi)),也有可能放在程序的data segment中(對(duì)象是在函數(shù)外部創(chuàng)建的,例如在全局作用域或靜態(tài)作用域內(nèi))。我們也可以這樣來產(chǎn)生一個(gè)objects:

      CPoint* pPoint = new CPoint(3.6); // pPoint->_x 初 值 為 3.6
      pPoint->x(5.3); // pPoint->_x 現(xiàn)值為 5.3
      delete pPoint;

        使用new operator產(chǎn)生的objects,是放在程序的heap(堆)之內(nèi)。

        不管哪一種方式來產(chǎn)生objects,我們依據(jù)某個(gè)class產(chǎn)生一個(gè)object的動(dòng)作稱為instantiation(實(shí)例化)。object的誕生和死亡時(shí),會(huì)自動(dòng)調(diào)用class中特殊的member function,稱為constructor 和 destructor。

        Constructor:object誕生時(shí)會(huì)自動(dòng)調(diào)用的class member functions稱為構(gòu)造函數(shù),此函數(shù)的命名必須與class相同,參數(shù)可以自定,沒有返回值。class可以有一個(gè)以上的constructors,其中無參數(shù)的那個(gè)稱為default constructor;只有一個(gè)參數(shù),并且以該class為參數(shù)類型的,稱為copy constructor。

        Destructor :object生命結(jié)束時(shí)會(huì)自動(dòng)調(diào)用的class member function稱為析構(gòu)函數(shù),一個(gè)class只能有一個(gè)destructor,沒有參數(shù),沒有返回值,其命名必須與class相同,并以~為前置符號(hào)。

      二、Objects 的生命Scope of Objects

          由于objects可能位于stack或heap或data segment之中,所以objects的生命周期就有差異。

        1. 放在stack之中的稱為local objects,它的生命隨著objects的產(chǎn)生產(chǎn)而開始,隨著所在函數(shù)的執(zhí)行結(jié)束而結(jié)束。

        2.放在data segment之中的稱為gobal objects,它的生命隨著程序的開(比程序進(jìn)入點(diǎn)還早),隨著程序的結(jié)束而結(jié)束。

        3.放 在heap之中的稱為heap objects,它的生命隨著new operator而開始,隨著delete operator而結(jié)束?!   ?/span>

        下面這個(gè)例子出現(xiàn)了剛剛所提到的三種不同的生命周期的objects。從程序的執(zhí)行結(jié)果,我們可以清楚的看到三種objects的生命范圍。其中用到的constructors(構(gòu)造函數(shù))和destructors(析構(gòu)函數(shù))。這個(gè)例子出現(xiàn)剛剛所提的三種不同生命週期的 objects。從程式的執(zhí)行結(jié)果,
      我們可以清楚看到三種 objects 的生命範(fàn)圍。其中用到的 constructors(建構(gòu)式) destructors。

      #include <iostream.h>
      #include <string.h>
      class CDemo
      {
        public:
           CDemo(const char* str); // constructor
           ~CDemo(); // destructor
        private:
           char name[20];
      };
       CDemo::CDemo(const char* str) // constructor
      {
        strncpy(name, str, 20);
         cout << "Constructor called for " << name << '\n';
       }
      CDemo::~CDemo() // destructor
      {
         cout << "Destructor called for " << name << '\n';
      }
      void func()
      {
         CDemo LocalObjectInFunc("LocalObjectInFunc"); 
        static CDemo StaticObject("StaticObject"); 
        CDemo* pHeapObjectInFunc = new CDemo("HeapObjectInFunc"); 
        cout << "Inside func" << endl; 
       }
      CDemo GlobalObject("GlobalObject"); 
      void main()
      {
         CDemo LocalObjectInMain("LocalObjectInMain"); 
         CDemo* pHeapObjectInMain = new CDemo("HeapObjectInMain"); 
         cout << "In main, before calling func\n"; 
         func();
         cout << "In main, after calling func\n"; 
      }

        執(zhí)行結(jié)果如下(注意,上例有new的動(dòng)作,卻沒有delete,是個(gè)錯(cuò)誤示范):

      1. Constructor called for GlobalObject 
      2. Constructor called for LocalObjectInMain 
      3. Constructor called for HeapObjectInMain 
      4. In main, before calling func 
      5. Constructor called for LocalObjectInFunc 
      6. Constructor called for StaticObject 
      7. Constructor called for HeapObjectInFunc 
      8. Inside func 
      9. Destructor called for LocalObjectInFunc 
      10. In main, after calling func 
      11. Destructor called for LocalObjectInMain 
      12. Destructor called for StaticObject 
      13. Destructor called for GlobalObject 

       

       

      posted on 2024-04-27 20:32  阮春義  閱讀(141)  評(píng)論(0)    收藏  舉報(bào)

      導(dǎo)航

      主站蜘蛛池模板: 三级国产在线观看| 亚洲18禁一区二区三区| 国产蜜臀av在线一区在线| 精品麻豆国产色欲色欲色欲WWW| 无码精品人妻一区二区三区湄公河| 国产精品线在线精品| 国产精品视频一区二区噜| 一区二区视频| 大庆市| 久在线精品视频线观看| 一区二区三区四区五区黄色| 人妻体体内射精一区二区| 麻豆国产成人AV在线播放| 久久99精品久久久久麻豆| 成人一区二区三区激情视频| 久久永久视频| 免费久久人人爽人人爽AV| 久久综合国产色美利坚| 亚洲欧美高清在线精品一区二区| 又爽又黄无遮挡高潮视频网站 | 国产一区二区三区导航| 秋霞无码一区二区| av偷拍亚洲一区二区三区| 国产精品一区二区三区专区| 欧美喷水抽搐magnet| 国产不卡av一区二区| 国产激情无码一区二区三区| 欧美福利电影A在线播放 | 老女老肥熟国产在线视频| 亚洲悠悠色综合中文字幕| 久久精品国产九一九九九| 激情国产一区二区三区四区小说| 国产又色又爽又黄的在线观看| 午夜福利影院不卡影院| 国产精品午夜av福利| 亚洲风情亚aⅴ在线发布| 色成人精品免费视频| 日韩精品一卡二卡三卡在线| 无码精品人妻一区二区三李一桐| 久久精品一本到99热免费| AV最新高清无码专区|