copy constructor

  1. copy constructor也分爲trivial和nontrivial兩種
    • 如果class展現出bitwise copy semantics(按位拷貝語義),則不會構造出
      copy constructor。
    • 反之,會構造出一個copy constructor。
  2. 不要bitwise copy semantics
    • 內含一個擁有nontrivial copy constructor的成員變量
    • base class 存在一個nontrivial copy constructor
    • virtual function
      還是vptr的問題,如果直接按位拷貝,也就是使用derived class來給
      base class初始化,那麼按位拷貝就會使得base class的vptr是derived的vptr
      那就出錯了。
      比如:
      D d;
      B b =d;
      如果按位拷貝,以後調用b,就會出現”多態”,這是不合理的。
    • virtual base class
      每個編譯器對於虛擬繼承的支持承諾,都表示必須讓 derived class object 中的virtual
      base class subobject位置 在執行期就準備妥當。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章