日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

Effective C++ 条款05

發布時間:2025/7/25 c/c++ 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

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