日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Effective C++ 条款05

發布時間:2025/7/25 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Effective C++ 条款05 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

了解C++默默編寫并調用哪些函數。Know what functions C++ silently writes and calls

?

有如下函數會被編譯器自動生成,如果在這些函數需要被調用時,且這個對象的作者自己沒有創建對應函數。

  • default 構造函數
  • 析構函數
  • copy構造函數
  • 賦值操作符
  • 注意,只有當這些函數被需要調用時,編譯器才會創建這些函數。

    ?

    對于copy構造函數和賦值操作符,編譯器創建的版本只是單純的將來源對象的每一個Non-static 成員變量拷貝到目標對象。

    另外,也會存在編譯器拒絕為class 生成賦值操作符或者是拷貝構造函數的情況:

    第一:如果父類的拷貝構造函數為private,那么子類不會自動生成拷貝構造函數。因為子類的拷貝構造函數需要調用父類的拷貝構造函數。

    第二:只有當生成的代碼合法,且有適當機會證明它有意義,對應函數才會自動生成。(以下面為例)

    template <T> class NamedObject { public:NamedObject(std::string &name,const T& value);............ private: Tstd::string &nameValue;const T& objectValue; }

     

    這時,有如下情況:

    std::string newDog("Persephone"); std::string oldDog("Satch"); NamedObject<int> p(newDog,2); NamedObject<int> s(oldDog,3); p=s;

    ?

    當代碼p=s這一句時,編譯器會為NamedObject 生成賦值操作符函數,但是,C++ 不允許引用類型被初始化以后再指向其他對象。所以這里,編譯器的動作是拒絕生成賦值操作符函數。因此編譯失敗。

    轉載于:https://www.cnblogs.com/lucy-lizhi/p/7443062.html

    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的Effective C++ 条款05的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。