程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 關於C++中的賦值與拷貝

關於C++中的賦值與拷貝

編輯:C++入門知識

  很久沒有用C++了,今天看到一道關於賦值與拷貝的面試題,准備寫幾句代碼驗證下。

  首先,講下驗證過後的結論:

  1)顯示調用拷貝構造函數,肯定會執行拷貝構造函數。如Cat c2(c1);

       2)在初使化時進行賦值,也會執行拷貝構造函數,如Cat c2=c1;

       3)其它時間進行賦值,執行operator=的實現函數。如Cat c1,c2; c1=c2;

代碼如下所示:

 

[cpp] 
#include <iostream> 
using namespace  std; 
class Cat{   
public:   
    char name[20];   
    
public:  
    Cat(){} 
    Cat(char * s){   
        if(s!=NULL) 
             strcpy(name,s); 
        cout<<"use constructor"<<endl; 
    }   
         
    Cat(const Cat & cat) 
    { 
        if(cat.name!=NULL) 
            strcpy(name,cat.name); 
        cout<<"use copy constrctor"<<endl; 
    } 
    Cat & operator=(Cat& cat) 
    { 
        if(this == &cat)   
         return *this;  
        strcpy(name,cat.name); 
        cout<<"use operator ="<<endl; 
        return *this; 
    } 
     
    
};   
 
int main(){   
    Cat c1("there is a cat");  //use constructor 
    Cat c2(c1); //use copy  constructor 
    Cat c3 = c2; // use copy  constructor 
    Cat c4,c5;   
    c5= c4 = c3; // use operator =   
     
    return 0;   
}   
下面粘貼下結果:

 

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