程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 復制構造函數的理解

復制構造函數的理解

編輯:C++入門知識

復制夠造函數顧名思義就是一個構造函數

但是呢這個構造函數是復制的

接下來看一段代碼

#include
//定義一個名字類
class name{
char* str;//有一個字符串成員
public:
name(const char* n){
str=new char[strlen(n)+1];//為字符串分配空間
strcpy(str,n);//復制字符串參數到字符串成員中
}
~name(){
delete str;//釋放字符串
}
};

int main()
{
name a("peter");//定義一個名字
if(true){
name b=a;//把名字付給b
}
return 0;
}
這段代碼是沒有寫復制構造函數的那麼程序的構造函數只執行了一次,但是析構函數執行了兩次

這是就是復制構造函數的作用了我們看下面的一段代碼

#include
//定義一個名字類
class name{
char* str;//有一個字符串成員
public:
name(const name& nam){
str=new char[strlen(nam.str)+1];//為字符串分配空間
strcpy(str,nam.str);//復制字符串參數到字符串成員中
}
name(const char* n){
str=new char[strlen(n)+1];//為字符串分配空間
strcpy(str,n);//復制字符串參數到字符串成員中
}
~name(){
delete str;//釋放字符串
}
};

int main()
{
name a("peter");//定義一個名字
if(true){
name b=a;//把名字付給b
}
return 0;
}

這段代碼寫了復制構造函數那麼程序執行了一次構造一次復制構造兩次析構

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