首頁 >後端開發 >C++ >C編譯器自動產生哪些成員函數?

C編譯器自動產生哪些成員函數?

Barbara Streisand
Barbara Streisand原創
2024-12-25 09:04:09977瀏覽

What Member Functions Does the C   Compiler Automatically Generate?

C 中編譯器自動產生的成員函數

問題:

在C 中,什麼成員函數負責編譯器自動為類別創建?所有類別都會出現這種情況嗎?

答案:

編譯器可能會根據需要為類別產生以下成員函數:

C 98/03:

  • 預設建構子:如果不存在使用者定義的建構函數,則建立。
  • 複製建構子: 建立如果沒有使用者定義的複製建構函式存在。
  • 複製賦值運算子: 如果不存在使用者定義的複製賦值運算符,則建立。
  • 析構函數: 如果不存在使用者定義的析構函數,則建立存在。

這些函數在需要時生成,並且僅在未明確聲明的情況下生成

C 11:

除了C 98 /03 函數之外,C 11也引入了:

  • 移動建構函數: 如果沒有使用者定義的建構子、賦值運算子或析構函數,則生成,該函數未標記為刪除,且所有成員和基數都是可移動的。
  • 移動賦值運算子:類似地,在與移動構造函數相同的條件下產生。

預設建構子:

預設建構子是隱式產生的建構函數,不接受任何爭論。它將所有成員變數初始化為預設值或零。預設建構函數對於建立類別的物件而無需手動指定參數至關重要。

以上是C編譯器自動產生哪些成員函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn