当前位置: 首页 > news >正文

给公司做网站多钱fontawesome 网站

给公司做网站多钱,fontawesome 网站,网站怎么设置标题,wordpress 主题 2016拷贝构造函数的引入 用对象来初始化对象 (1)简单变量定义时,可以直接初始化,也可以用另一个同类型变量来初始化。举例说明 (2)用class来定义对象时,可以直接初始化,也可以用另一个对象来初始化。举例说明 testperson xiaohong(na…

拷贝构造函数的引入

  • 用对象来初始化对象
    (1)简单变量定义时,可以直接初始化,也可以用另一个同类型变量来初始化。举例说明
    (2)用class来定义对象时,可以直接初始化,也可以用另一个对象来初始化。举例说明
  testperson xiaohong(nameq, 23, true);  //局部变量 分配在栈上xiaohong.printfmy();testperson p1(xiaohong);  //方式2:用另一个对象来初始化新定义的对象p1.printfmy();testperson p2 = p1;p2.printfmy();

-

  • 为什么可以
    (1)变量的直接初始化,是变量在被分配内存之后直接用初始化值去填充赋值完成初始化
    (2)变量用另一个变量来初始化,是给变量分配了内存后执行了一个内存复制操作来完成的初始化
    (3)对象的直接初始化,是对象在分配内存之后调用了相应constructor来完成的初始化
    (4)对象的用另一个对象来初始化,是对象在分配之后调用了相应的copy constructor来完成初始化

  • 拷贝构造函数
    (1)拷贝构造函数是构造函数的一种,符合构造函数的一般性规则
    (2)拷贝构造函数的引入是为了让对象在初始化时能够像简单变量一样的被直接用=来赋值
    (3)拷贝构造函数不需要重载,他的参数列表固定为const classname& xx
    (4)拷贝构造函数很合适用初始化列表来实现

//拷贝构造函数
MAN::testperson::testperson(const testperson &pn)
{cout << "copy constructor"  << endl;
}
//拷贝构造函数
MAN::testperson::testperson(const testperson &pn) {this->name = pn.name;this->age = pn.age;this->male = pn.male;cout << "copy constructor" << endl;
}
MAN::testperson::testperson(const testperson &pn):name(pn.name),age(pn.age),male(pn.male){cout << "copy constructor" << endl;
}
  string nameq = "lili";testperson xiaohong(nameq, 23, true);  //局部变量 分配在栈上xiaohong.printfmy();testperson p1(xiaohong);  //方式2:用另一个对象来初始化新定义的对象p1.printfmy();testperson p2 = p1;  //方式2 本质一样p2.printfmy();

在这里插入图片描述

浅拷贝与深拷贝

  • 浅拷贝的缺陷
    (1)上节讲的只有普通成员变量初始化的拷贝构造函数,就是浅拷贝
    (2)如果不显式提供,C++会自动提供一个全部普通成员被浅拷贝的默认copy constructor
    (3)浅拷贝在遇到有动态内存分配时就会出问题,举例演示:

  • 如何解决
    (1)不要用默认copy constructor,自己显式提供一个copy constructor,并且在其内部再次分配动态内存
    (2)这就叫深拷贝,深的意思就是不止给指针变量本身分配内存一份,也给指针指向的空间再分配内存(如果有需要还要复制内存内的值)一份
    (3)一般如果不需要深拷贝,根本就不用显式提供copy constructor,所以提供了的基本都是需要深拷贝的
    (4)拷贝构造函数不需要额外的析构函数来对应,用的还是原来的析构函数

MAN::testperson::testperson(const testperson &pn): name(pn.name), age(pn.age), male(pn.male) {pint = new int(*pn.pint);//深拷贝cout << "copy constructor" << endl;
}
  string nameq = "lili";testperson xiaohong(nameq, 23, true);  //局部变量 分配在栈上testperson p1(xiaohong);  //方式2:用另一个对象来初始化新定义的对象*(xiaohong.pint) = 56;xiaohong.printfmy();p1.printfmy();testperson p2 = p1;  //方式2 本质一样p2.printfmy();

在这里插入图片描述

  • 如何深度理解浅拷贝和深拷贝
    (1)这个问题不是C++特有的,Java等语言也会遇到,只是语言给封起来了,而C++需要类作者自己精心处理
    (2)从编程语言学角度讲,本质上是值语义value symatics和引用语义reference symatics的差别
    (3)C学好了有linux内核阅读级别的C功底,理解这些简直太简单了

总结

理解普通变量赋值和对象赋值的区别
理解什么是浅拷贝、深拷贝,怎么实现深拷贝

学习记录,侵权联系删除。
来源:朱老师物联网大课堂

http://www.sczhlp.com/news/119511/

相关文章:

  • 实用指南:【鸿蒙面试题-6】LazyForEach 懒加载
  • 宠物论坛网站策划书wordpress 获取网址
  • 产品企业网站大型建设网站
  • 网站开发人员应具备什么素质宁波市鄞州区建设局网站
  • 黄石网站建设流程企业网站建站之星
  • 不是营销型的网站网站改版 升级的目的
  • 网站可信度电商设计网站培训
  • 软件开发和网站建设哪个好wordpress 手机浏览
  • 山西网站开发二次开发免费网站建设网站
  • 做a货包好的网站html网页制作表格代码
  • 网站开发维护工作成都旅游攻略详细
  • 光明楼网站建设永久域名最新网站
  • 网站建设专家联系方式下载中国建设银行官网站
  • 网站建设门店牌子烟台做网站的
  • 北京高端网站建设制作设计基础展示型网站和cms
  • 深圳市住房和建设局官网站首页软件开发的职业规划1000
  • 上海网站建设联系电话阿里云上的网站建设
  • 简单来讲讲C#中的锁
  • 东莞市企业网站制作平台有没有专门做尾料回收的网站
  • 网站后台如何更新手机网站发号系统源码
  • 网站建设市场需求分析怎么用自己的网站做邮箱
  • 网站被k什么意思在线做logo印章网站
  • 网络服务器怎么连接沈阳seo推广
  • 专业网站 建设公司品牌型网站建设哪家
  • 莱西网站建设哪家好织梦做的网站能做seo吗
  • 大连网站制作选择ls15227ucenter 整合两个数据库网站
  • 网站检测报告哪里做如何在百度创建网站
  • 专业网站是指什么手机管理网站模板下载安装
  • mysql去除空格,可以使用的函数
  • 网站搭建好后被移动宽带屏蔽怎么办河南省新闻出版学校