加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 综合聚焦 > 创业热点 > 经验 > 正文

C++中的四个默认成员函数与运算符重载详解

发布时间:2020-12-31 03:23:22 所属栏目:经验 来源:网络整理
导读:副标题#e# 本文主要给大家介绍了关于C++默认成员函数与运算符重载的相关内容,分享出来公的敬爱啊参考学习,话不多说,来一起看看详细的介绍: 一:类和对象的基础知识:类的定义,访问限定符,面向对象封装性,对象的大小计算等等。(编译环境为VS2015)

例:

 Date(const Date& d)
 {
  _year = d._year;
  _month = d._month;
  _day = d._day;
 }

 //Date d1(2017,4);
 // 下面两种用法都是调用拷贝构造函数,是等价的。
 //Date d2(d1); 
 //Date d2 = d1;

特征

      1. 拷贝构造函数其实是一个构造函数的重载。

      2. 拷贝构造函数的参数必须使用引用传参,使用传值方式会引发无穷递归调用。

      3. 若未显示定义,系统会默认缺省的拷贝构造函数。缺省的拷贝构造函数会,依次拷贝类成员进行初始化。

赋值运算符重载

拷贝构造函数是创建的对象,使用一个已有对象来初始化这个准备创建的对象。赋值运算符的重载是对一个已存在的对象进行拷贝赋值。

5个C++不能重载的运算符: .*/::/sizeof/?:/.

 Date& operator = (const Date& d)
 {
  if (this != &d)//防止重复赋值
  {
   this->_year = d._year;
   this->_month = d._month;
   this->_day = d._day;
  }
  return *this;
 }

 void Test()
 {
  Date d1(2017,4);
  //拷贝构造
  Date d2(d1);
  //赋值运算符重载
  Date d3;
  d3 = d1;
 }

3:关于隐含的this指针以及对运算符重载背后做的事情。

隐含的this指针

      1. 每个成员函数都有一个指针形参,它的名字是固定的,称为this指针,this指针是隐式的。(构造函数比较特殊,没有这个隐含this形参)

      2. 编译器会对成员函数进行处理,在对象调用成员函数时,对象地址作实参传递给成员函数的第一个形参this指针。

      3. this指针是成员函数隐含指针形参,是编译器自己处理的,我们不能在成员函数的形参中添加this指针的参数定义,也不能在调用时显示传递对象的地址给this指针。

例一:在拷贝构造函数中this所做的事情

C++中的四个默认成员函数与运算符重载详解

例二:在运算符重载中this做的事情

C++中的四个默认成员函数与运算符重载详解

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程小技巧的支持。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读