博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重载赋值运算符
阅读量:4212 次
发布时间:2019-05-26

本文共 1084 字,大约阅读时间需要 3 分钟。

  • 赋值运算符重载用于对象数据的复制
  •  operator= 必须重载为成员函数
  • 重载函数原型为:

        类型  &  类名  :: operator= ( const  类名 & ) ;

案例:完善Name类,支持=号操作。

 

 

具体看如下代码:

#define  _CRT_SECURE_NO_WARNINGS #include 
using namespace std;class Name{public: Name(const char* myp) { m_len = strlen(myp); m_p = (char*)malloc(m_len+1); strcpy(m_p,myp); } //Name obj2=obj1 这是浅拷贝 //解决方案,手工编写深拷贝构造函数 Name(const Name& obj1) { cout << "拷贝构造函数" << endl; m_len = obj1.m_len; m_p = (char*)malloc(m_len+1); strcpy(m_p,obj1.m_p); } Name& operator=(Name& obj1) { cout << "重载了" << endl; //先释放旧的内存 if (this->m_p != NULL) { free(m_p); m_p = NULL; m_len = 0; } this->m_len = obj1.m_len; this->m_p = new char[m_len + 1]; //把obj1赋值 strcpy(m_p,obj1.m_p); return *this; } ~Name() { if (m_p != NULL) { free(m_p); m_p = NULL; m_len = 0; } }protected:private: char* m_p; int m_len;};//对象析构的时候,出现coredumpvoid objplaymain(){ Name obj1("abcdefg"); Name obj2 = obj1; //调用的是拷贝构造函数,因为这里有个初始化的操作 Name obj3("obj3"); obj3 = obj1; //调用的是等号重载 obj1 = obj2 = obj3;}void main(){ objplaymain(); cout << "hello..." << endl; system("pause"); return;}

 

 

转载地址:http://gezmi.baihongyu.com/

你可能感兴趣的文章
【数据库之mysql】mysql的安装(一)
查看>>
【数据库之mysql】 mysql 入门教程(二)
查看>>
【HTML5/CSS/JS】A list of Font Awesome icons and their CSS content values(一)
查看>>
【HTML5/CSS/JS】<br>与<p>标签区别(二)
查看>>
【HTML5/CSS/JS】开发跨平台应用工具的选择(三)
查看>>
【心灵鸡汤】Give it five minutes不要让一个好主意随风而去
查看>>
【React Native】Invariant Violation: Application AwesomeProject has not been registered
查看>>
【ReactNative】真机上无法调试 could not connect to development server
查看>>
【XCode 4.6】常用快捷键 特别是格式化代码ctrl+i
查看>>
【iOS游戏开发】icon那点事 之 实际应用(二)
查看>>
【iOS游戏开发】icon那点事 之 图标设计(三)
查看>>
【IOS游戏开发】之测试发布(Distribution)
查看>>
【IOS游戏开发】之IPA破解原理
查看>>
【一天一道LeetCode】#45. Jump Game II
查看>>
【一天一道LeetCode】#46. Permutations
查看>>
【一天一道LeetCode】#47. Permutations II
查看>>
【一天一道LeetCode】#56. Merge Intervals
查看>>
【一天一道LeetCode】#58. Length of Last Word
查看>>
【一天一道LeetCode】#59. Spiral Matrix II
查看>>
【一天一道LeetCode】#30. Substring with Concatenation of All Words
查看>>