Inside The C++ Object Model

來源:互聯網
上載者:User

  1. 期待C++的ABI

  2. 轉型(cast)其實是一種編譯器指令,大部分情況下它並不改變一個指標所含的真正地址,它隻影響“被指出之記憶體的大小和其內容”的解釋方式;那麼,什麼情況下轉型會導致指標的值發生變化呢?多重繼承時轉向不同基類?

  3. Global Objects的記憶體保證會在程式啟用的時候被清0;Local Objects配置於棧中,heap objects配置於自由空間中,都不一定會被清0,它們的內容將是上次被使用後的遺迹

  4. 有四種情況,會導致“編譯器必須為未聲明之constructor之classes合成一個default constructor”

    • “帶有Default Constructor”的Member Class Object

    • “帶有Default Constructor”的Base Class

    • “帶有Virtual Function”的Class

    • “帶有Virtual Base Class”的Class

  5. C++新手一般有兩個常見的誤解

    • 任何Class如果沒有定義Default Constructor,就會被合成出一個來

    • 編譯器合成出來的Default Constructor會設定每一個member object為預設值

  6. 如你所見,沒有一個是真的

  7. 有四種情況,一個class不應展現出“bitwise copy semantics”

    • 當class內含一個member object而後者的class有一個copy constructor時

    • 當class繼承自一個base class而後者存在一個copy constructor時

    • 當class聲明了virtual functions時

    • 當class繼承鏈中有virtual base class時

  8. member scope resolution rules:對member function本身的分析,會直到整個class的聲明都出現了才開始;然而,這對於member function的argument list並不為真,Argument List中的參數類型還是會在它們第一次遭遇時被適當的決議完成

  9. Template中,對於一個nonmember name的決議結果是根據這個name的使用是否與“用以具現該template的參數類型”有關而決定的:如果其使用互不相關,那麼就以“scope of template declaration”來決定name,否則就以“scope of template instantiation”來決定

  10.  

    • 指向data member的指標:&Point3d::z,得到data member在class object中的位移量

    • 指向static member function的指標,&Point3d::sti_func(),得到其在記憶體中的位置,並且類型是int (*)()而不是一個指向class member function的指標,即不是int (Point3d::*)()

    • 對一個nonstatic member function取其地址,得到其在記憶體中的位置

    • 對virtual member function取地址,將得到一個索引值

     

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.