Chapter 8 怎样使用类和对象(下篇)

⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️

8.2 对象数组

1.对象数组的每一个元素都是同类的对象

2.在建立数组时,同样要调用构造函数,如果有50个元素,那么就要调用50次构造函数

3.编译系统只为每一个对象元素的构造函数传递一个是实参,所以在定义数组时提供的实参个数不能超过数组元素个数

4.提问:如果构造函数有多个参数,在定义对象数组时应当怎样实现初始化呢?

回答:在花括号中分别写出构造函数名并在括号内指定实参

例子:Student stu3={

Student(1001,12,12);

Student(1002,13,13);

Student(1003,14,14);

};

⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️

8.3 对象指针

1.对象空间的起始地址就是对象指针

2.作用:可以定义一个指针数组,用来存放对象的地址,这就是指向对象的指针变量

a:指向对象数据成员的指针

形式:数据名 *指针变量名

b:指向对象成员函数的指针

注意⚠️:定义指向对象成员函数的指针变量的方法和定义指向普通函数的指针变量方法不同

a:定义指普通函数的指针变量

形式:类型名 (*指针变量名)(参数列表)

cpp 复制代码
void (*p)();//p指向void型函数的指针变量

b:定义指向对象成员函数的指针变量

形式:数据类型名(类名::*指针变量名)(参数列表)

cpp 复制代码
void (Time:: *p)();//定义p是指向Time类中公用成员函数的指针变量

c:使指针变量指向一个公用成员函数的一般形式:指针变量名=&类名::成员函数名

3.指向当前对象的this指针:在每一个成员函数中都包含一个特殊的指针,这个指针的名字是固定的,称为this

a:作用:它是指向本类对象的指针,他的值是当前被调用的成员函数所在的对象的起始地址

b:this指针在系统中是自动实现的

⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️

8.4 公用数据的保护

1.常对象的形式:类名 const 对象名(实参名) 也可以是const 类名 对象名(实参名)

2.常成员函数可以访问常对象中的数据成员,但仍然不允许修改常对象中数据成员的值

注意⚠️:常成员函数不能调用另一个非const成员函数

3.指向对象的常指针

a:将指针变量声明为const型,这样指针变量始终保持为初值,不能改变,即其指向不变,指向对象的常指针变量的值不能改变,即始终指向一个对象

b:形式:类名 * const 指针变量名

4.指向常对象的指针变量

a:形式:const 类型名 * 指针变量名

b:如果一个变量已被声明为常变量,只能用指向常变量的指针变量指向她它,而不能用一般的(指向非const型变量)指针变量去指向它

c:当希望在调用函数时对象的值不被修改,就应当把形参定义为指向常对象的指针变量,同时用对象的地址作实参(对象可以是const或非const)

⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️

9.5 对象的动态建立和释放

1.用new运算符动态建立对象,用delete运算符撤销对象

欢迎指正,共同学习!

相关推荐
上海安当技术13 分钟前
单点登录 SSO 怎么选协议?SAML 2.0 / OAuth 2.0 / OIDC / CAS 对比与 ERP、OA、CRM 接入实战
java·开发语言
不才不才不不才30 分钟前
Spring 源码系列(14): JDK 动态代理 vs CGLIB,以及拦截器责任链
java·开发语言·spring
mifengxing31 分钟前
计算机组成原理——存储器系统
开发语言·考研·计算机组成原理·复习笔记·计算机408
啦啦啦啦啦zzzz1 小时前
设计模式:原型模式
c++·设计模式·原型模式
小保CPP1 小时前
OpenCV C++基于CNN模型的场景文本检测(OCR)
c++·人工智能·opencv·计算机视觉·cnn·ocr·光学字符识别
Yolanda_20221 小时前
Python学习-第九部分-错误处理与异常处理
开发语言·python·学习
郝学胜-神的一滴1 小时前
Qt 高级编程 037:QSS按钮样式封神指南
开发语言·c++·qt·软件工程·用户界面
DFT计算杂谈2 小时前
SCIENTIFIC REPORTS 非 van der Waals可调二维磁性材料设计平台
开发语言·php
库拉库拉里2 小时前
深入理解 C# 异步编程:同步、Task.Wait () 与 await 的本质区别及实践指南
开发语言·c#
霍霍的袁2 小时前
【C++】string类 从 入门使用 到 底层深浅拷贝模拟实现
开发语言·c++·visual studio