程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> 解析c++中的默認operator=操作的詳解

解析c++中的默認operator=操作的詳解

編輯:C語言基礎知識

在c++中,如果沒有定義operator=操作,編譯器會提供一個默認的operator=操作。由於operator=操作和拷貝構造函數的功能類似,都執行拷貝操作。因此,編譯器也分提供無用的默認operator=操作和非無用的默認operator=操作。並且什麼時候提供非無用的默認operator=操作和無用的等操作的情形也和拷貝構造函數類似。(詳細分析過程請參考《基於c++中的默認拷貝函數的使用詳解》)

對於一個類,編譯器會提供非無用的operator=操作的情形:

1 該類是含有虛成員函數(繼承自虛基類,或者繼承的基類含有虛成員函數也屬於這種情況)

2 該類繼承的基類自定義了operator=操作(如果基類沒有自定義operator=操作,但是編譯器會為基類提供非無用的默認operator=操作,也屬於這種情況。這就是說,只要基類有一個非無用的operator=操作就行,不管這個非無用operator=操作是自定義的,還是編譯器提供的都行)

3 該類含有成員對象,該成員對象自定義了operator=操作(如果成員對象沒有自定義operator=操作,但是編譯器會為成員對象變量提供非無用的默認operator=操作,也屬於這種情況。這就是說,只要成員對象變量有一個非無用的operator=操作,不管這個非無用的operator=操作是自定義的,還是編譯器提供的,都行)

並且,如果類自定義了operator=操作,編譯器只是負責調用,不會額外提供任何拷貝過程;對於編譯器提供的默認operator=操作,不管是無用的還是非無用的,都只執行淺拷貝。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved