在c++中,下面三種物件需要呼叫拷貝建構函式(有時也稱「複製建構函式」):
1) 乙個物件作為函式引數,以值傳遞的方式傳入
函式體;
2) 乙個物件作為函式返回值,以值傳遞的方式從函式返回;
3) 乙個物件用於給另外乙個物件進行初始化(常稱為賦值初始化);
#includeusing namespace std;
class position
position(int x, int y) :x(x), y(y)
~position()
position(const position&p)
position & operator=(const position&p) };
position testcopyfunction()
int main(int argc, char* argv)
執行結果:
position(int x, int y)
position(const position&p)
~position()
position & operator=(const position&p)
~position()
//----------------------------------
position(const position&p)
position(const position&p)
~position()
~position()
~position()
拷貝構造函式呼叫的時機
拷貝函式何時會被呼叫呢?最明顯的就是用乙個類物件初始化另外乙個物件的時候 比如x a x 這句語義上就是先建立x 臨時物件,再呼叫x的拷貝建構函式 初始化 a,這只是語義上的,編譯器完全可能優化掉臨時物件 注意區分初始化和賦值 呼叫assignment operator 第二種情況是函式按值傳引數的...
拷貝建構函式被呼叫的時機
拷貝建構函式被呼叫的時機 1.當用類的乙個物件去初始化該類的另乙個物件 或引用 時系統自動呼叫拷貝建構函式實現拷貝賦值。2.若函式的形參為類物件,呼叫函式時,實參賦值給形參,系統自動呼叫拷貝建構函式。3.當函式的返回值是類物件時,系統自動呼叫拷貝建構函式。下面給出乙個例子 cpp view plai...
C 拷貝構造函式呼叫時機
class a 傳入乙個字串代表變數的名字 a string n name n a 拷貝建構函式a const a a 過載 運算子 a operator const a a friend ostream operator ostream os,const a a private string na...