溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

copy_constructor 復制構造函數2

發(fā)布時間:2020-05-31 00:07:24 來源:網絡 閱讀:255 作者:神跡難覓 欄目:編程語言

#include<iostream>

#include<string.h>

using namespace std;

class name{

public:

name(char *pn);

~name();

name::name(const name& n);

protected:

char *pname;

int size;

};

name::name(char *pn){

cout << "constructing" << pn << endl;

pname = new char[strlen(pn) + 1];

if (pname != 0)

strcpy_s(pname, strlen(pn) + 1, pn);

size = strlen(pn);

}

name::~name(){

cout << "Destructing" << pname << endl;

pname[0] = '\0';

delete[]pname;

size = 0;

}

name::name(const name& n){//拷貝構造函數。

cout << "call copy_constructor" << endl;

int size = n.size+1;

pname = new char[size ];//為其臨時對象申請個內存。讓臨時對象的指針指向它。

//防止釋放臨時對象時把原來的對象的指針所指空間給弄亂

strcpy_s(pname, size, n.pname);//兩個參數不好辦,用三個參數。

}

void main(){

name Obj1("NoName");

cout << "strlen(\"NoName\")=" << strlen("NoName") << endl;// 轉義 \"

name Obj2 = Obj1;

system("pause");

}


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI