C++学习笔记:=操作符的重载实现

// 等号操作符重载.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include 
#pragma warning(disable:4996)
using namespace std;

class Name{
public:
	Name &operator=(Name& obj){
		//先清空原来name1指向的空间
		if (this->name != NULL){
			delete[] name;
			this->len = 0;
		}
		len = obj.len;
		name = new char[len + 1];
		strcpy(name, obj.name);
		return *this;
		//再返回一个引用 函数返回值做左值,需返回引用
	}
	Name(char* _name,int _len){
		len = _len;
		name = (char *)malloc(sizeof(char)*(_len + 1));
		strcpy(name, _name);
	}
	~Name(){
		len = 0;
		if (name != NULL){
			free(name);
			name = NULL;
		}
	}

private:
	int len;
	char *name;
};

int _tmain(int argc, _TCHAR* argv[])
{
	Name n1("abcdefg", 7);
	Name n2("obj2",4);
	n1 = n2;//如果不重载=操作符的话,程序会down掉
	return 0;
}

 
 

你可能感兴趣的:(C++语言)