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

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

8.2 对象数组

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

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

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

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

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

例子:Student stu[3]={

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运算符撤销对象

欢迎指正,共同学习!

相关推荐
一起养小猫14 小时前
Flutter for OpenHarmony 实战:打造天气预报应用
开发语言·网络·jvm·数据库·flutter·harmonyos
安全二次方security²14 小时前
CUDA C++编程指南(7.25)——C++语言扩展之DPX
c++·人工智能·nvidia·cuda·dpx·cuda c++编程指南
xyq202414 小时前
Java 抽象类
开发语言
爱装代码的小瓶子14 小时前
【c++与Linux基础】文件篇(4)虚拟文件系统VFS
linux·开发语言·c++
疯狂的喵19 小时前
C++编译期多态实现
开发语言·c++·算法
2301_7657031419 小时前
C++中的协程编程
开发语言·c++·算法
m0_7487080519 小时前
实时数据压缩库
开发语言·c++·算法
小魏每天都学习20 小时前
【算法——c/c++]
c语言·c++·算法
lly20240620 小时前
jQuery Mobile 表格
开发语言
惊讶的猫20 小时前
探究StringBuilder和StringBuffer的线程安全问题
java·开发语言