您好,登錄后才能下訂單哦!
#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");
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。