<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] # 簡介 類是創建對象的模板,不占用內存空間,不存在于編譯后的可執行文件中;而對象是實實在在的數據,需要內存來存儲。對象被創建時會在棧區或者堆區分配內存。 直觀的認識是,如果創建了 10 個對象,就要分別為這 10 個對象的成員變量和成員函數分配內存,如下圖所示: ![](https://img.kancloud.cn/0d/36/0d362721c1eeb8b2bbcbc17905341fa2_398x181.png) 不同對象的成員變量的值可能不同,需要單獨分配內存來存儲。但是不同對象的成員函數的代碼是一樣的,上面的內存模型保存了 10 份相同的代碼片段,浪費了不少空間,可以將這些代碼片段壓縮成一份。 事實上編譯器也是這樣做的,編譯器會將成員變量和成員函數分開存儲:分別為每個對象的成員變量分配內存,但是所有對象都共享同一段函數代碼。如下圖所示: ![](https://img.kancloud.cn/71/6f/716ff2536bf814127895e9a4afc15b3e_372x122.png) 成員變量在堆區或棧區分配內存,成員函數在代碼區分配內存 # 成員變量和函數的存儲 1. 空類的大小是1,sizeof 2. 類成員函數和靜態成員變量,靜態成員函數不占用類的大小 3. 普通成員變量占用類大小 4. 類的成員中,成員變量和成員函數是分開存儲的 在c語言中,“分開來聲明的,也就是說,語言本身并沒有支持“數據”和“函數”之間的關聯性我們把這種程序方法稱為“程序性的”,由一組“分布在各個以功能為導航的函數中”的算法驅動,它們處理的是共同的外部數據。 c++實現了“封裝”,那么數據(成員屬性)和操作(成員函數)是什么樣的呢? “數據”和“處理數據的操作(函數)”是分開存儲的 * c++中的非靜態數據成員直接內含在類對象中,就像c struct一樣。 * 成員函數(member function)雖然內含在class聲明之內,卻不出現在對象中。 * 每一個非內聯成員函數(non-inline member function)只會誕生一份函數實例. ~~~ class MyClass01{ public: int mA; }; class MyClass02{ public: int mA; static int sB; }; class MyClass03{ public: void printMyClass(){ cout << "hello world!" << endl; } public: int mA; static int sB; }; class MyClass04{ public: void printMyClass(){ cout << "hello world!" << endl; } static void ShowMyClass(){ cout << "hello world!" << endl; } public: int mA; static int sB; }; int main(){ MyClass01 mclass01; MyClass02 mclass02; MyClass03 mclass03; MyClass04 mclass04; cout << "MyClass01:" << sizeof(mclass01) << endl; //4 //靜態數據成員并不保存在類對象中 cout << "MyClass02:" << sizeof(mclass02) << endl; //4 //非靜態成員函數不保存在類對象中 cout << "MyClass03:" << sizeof(mclass03) << endl; //4 //靜態成員函數也不保存在類對象中 cout << "MyClass04:" << sizeof(mclass04) << endl; //4 return EXIT_SUCCESS; } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看