C++入门:封装全解(下)
来源:互联网 发布:淘宝罗技旗舰店 编辑:程序博客网 时间:2024/05/22 17:40
对象成员与对象数组
对象数组
对象数组就是一组具有相关性的对象集合。比如,一个班的同学,一个图形中所有的点。
提醒:需要注意从堆中实例对象数组和从栈中实例对象数组后,调用方法有所不同。且,从堆中实例化对象数组,使用后需要手动销毁。
对象成员
在实际开发中,我们常遇到的情况有:某一个对象中的某个成员,本身也是一个对象。如下例子:
在该例子中, 当实例化一个 Line 对象后,Line 内的两个成员 m_coorA 和 m_coorB 也是两个 Coordinate 对象。
值得注意的是,在该例子中实例化时,被实例化的先后顺序为 m_coorA -> m_coorB -> Line
在该例子中实例化时,实例化被销毁的先后顺序为Line -> m_coorB -> m_coorA
浅拷贝和深拷贝
浅拷贝和深拷贝都是基于拷贝构造函数实现的,上一篇文章中讲到了拷贝构造函数
浅拷贝
如上就是浅拷贝实现方法,在浅拷贝中会遇到的问题就是,arr2 和 arr1 中的指针成员会指向内存中的同一个地址
深拷贝
对象指针
对象指针
用指针来实例化对象
对象成员指针
在对象指针的基础上升级,实例化一个 Line 对象,Line 对象内有两个指针 m_coorA 和 m_coorB 这两个指针又实例化了 Coordinate 对象。
this指针
this 指针的使用如下图,当我们希望类中成员函数传入的参数和数据成员同名时,可以用 this 指针准确调用数据成员
如果我们在成员函数中调用了数据成员,这时编辑器其实是默认会给我们加上 this 指针。如下图这样写,其实编译器会自动参照上图方式进行编译。
为什么会是这个样子,还是和实例化对象在内存中的存储有关,先看下图:
car1 , car2 , car3 三个对象拥有同名的数据成员 wheelCount ,且三个 wheelCount 在内存中是分开存储的。但成员函数 getWheelCount 在内存的存储其实只有一份,三个不同的对象调用同一个成员函数,就需要通过 this 指针来告诉 getWheelCount ,以区分不同对象的调用。
const重现江湖
常对象成员
常成员函数
- C++入门:封装全解(下)
- C++入门:封装全解(上)
- [C#]桌面模式下GDI绘制(全透明背景)
- linux 下sqlite 编程入门全攻略
- ubantu下最强最全Git入门
- 算法(全排列算法封装)
- c++ 封装 (下)
- 脚本入门(封装.继承。)
- C++Windows下SQLite简单封装
- 全排列(C++)
- C++入门:继承全解
- Hadoop入门案例(六)之二次排序,全排序基础下的二次排序
- Linux下C编程入门
- STM32入门系列-使用C语言封装寄存器
- Java:封装案例(下)
- Objective-C基础(面向对象--下--三大特性--封装)
- Qt c/C++ 混合编程,windows下的网络编程--udp封装(一)
- LINUX下的C编程入门(二)文件系统编程
- Spring boot热部署导致CacheManager重名的解决办法
- 关于EL表达式使用方式
- xml里写sql语句大于,小于的正确方法
- 关于阿里面试的事物传播性提问总结
- linux 文件操作系统调用
- C++入门:封装全解(下)
- oracle Toad常用快捷键大全-Toad快捷键设置 TOAD使用笔记
- Python程序员的10个常见错误
- C# 多态的实现
- Jsp传参为null
- 手动生成 hadoop-eclipse-plugin-2.x 插件
- TUXEDO监视系统运行tmadmin命令
- 第十周 项目 1 — (3)中序线索化二叉树的算法验证
- 证书的应用之一 —— TCP&SSL通信实例及协议分析(中)