本文共 1014 字,大约阅读时间需要 3 分钟。
具体看如下注释和代码:
#define _CRT_SECURE_NO_WARNINGS #includeusing namespace std;class Name{public: Name(const char* pname) { size = strlen(pname); pName = (char*)malloc(size + 1); strcpy(pName, pname); cout << "调用11" << endl; } Name(Name& obj) { //用obj来初始化自己 pName = (char*)malloc(obj.size + 1); strcpy(pName, obj.pName); size = obj.size; cout << "调用22" << endl; } ~Name() { cout << "开始析构" << endl; if (pName != NULL) { free(pName); pName = NULL; size = 0; } } void operator=(Name& obj3) { if (pName != NULL) { free(pName); pName = NULL; size = 0; } //用obj3来=自己 pName = (char*)malloc(obj3.size + 1); strcpy(pName, obj3.pName); size = obj3.size; cout << "重载运算操作符" << endl; }protected:private: char* pName; int size;};//对象的初始化 和 对象之间=号操作是两个不同的概念void playObj(){ Name obj1("obj1....."); //输出:调用11 Name obj2 = obj1; //这里调用的是拷贝构造函数,输出:调用22 Name obj3("obj3..."); //输出:调用11 //重载=号操作符 obj2 = obj3; //=号操作,输出:重载运算操作符 cout << "业务操作。。。5000" << endl;}void main(){ playObj(); system("pause");}
转载地址:http://tezmi.baihongyu.com/