C++学习--类和对象

一、类的定义

它定义了一类事物的共同特征(属性)和行为(方法),是一个抽象的概念。

蓝色框住的相当于类,下面具体的就相当于对象

类的定义

外界不能访问private数据,可以通过public的方法(对外的接口)设置它的值

创建一个点类:

根据类创建对象:

成员函数:就是刚才public里面那些,show和set这种

如果要在类外面定义则:

二、对象的声明

类是模板,对象是按模板造出来的具体东西。

对象 = 实例 / 具体的个体

它是按照类这个模板,创建出来的、有具体数据的实体,是类的 "具体实现"。

1、对象成员的访问

2、对象和类的总结

1、类是抽象的模板,对象是具体的实例

2、一个类可以创建无数个对象,每个对象都拥有类定义的属性和行为,但数据可以不同

3、类规定了 "是什么样",对象是 "这个具体的东西

三、类的界面和实现

分为类的界面和类的实现(把类和类函数放进.h和.cpp文件)就是类的定义放在.h,成员函数的实现放在.cpp,在main里面调用头文件就行

四、构造函数

1、定义

构造函数 = 创建对象时自动调用的初始化函数,用来给成员变量赋初值,避免野数据。

(只能在public里面)无返回类型,函数名与类名一致

2、具体实例

在point类里面实现构造函数

这就是系统自动生成的默认构造函数

构造函数可以重载:

记得在.h文件声明

当你一个构造函数都没写的时候,系统会自动给你一个空的构造函数

五、成员初始化表

六、默认参数的构造函数

不要同时写空参构造和全默认参数构造,会出现调用歧义报错。

七、析构函数

当释放一个对象时会自动调用析构函数

1、特点

2、默认析构函数

3、析构函数的用途

八、拷贝构造函数

1、定义

2、特点

3、被自动调用

4、案例

九、浅拷贝与深拷贝

系统也会生成一个默认拷贝构造函数

1、定义

如果类中含有指针类型的变量,浅拷贝会发生一些错误

2、案例

这样会报错,因为结束时析构函数释放空间,先释放了s2的,但是s2和s1指向同一个,会释放两次,因此报错

所以要重新写一个拷贝构造函数,不用默认的

10、this指针

每次调用不同对象时,this指针就指向要调用的对象,也就是谁调用函数,this就指向谁

就像d1调用show时,this就指向d1

this指针的用途

类似在data类当中

十一、向函数传递对象

传对象不会改外面的值

传对象指针和对象引用会改外面的值

十二、static类的静态成员

有时候程序需要实现类的多个对象的数据共享和交互,可以采用全局变量实现,但是全局变量在一定程度上破坏了类的封装性,数据不够安全,所以提出静态成员的概念

修饰静态数据成员,修饰静态成员函数

1、静态数据成员

2、静态成员函数

3、案例

假设我要求平均分

现在换成定义为static的

其中可以定义对象数组 student s3 = {student(70),student(80),student(90) };

静态成员函数不能访问非静态的成员

十三、friend类的友元

允许一个外部函数里面可以访问一个类的私有成员

(友元函数)就是到类的里面声明函数,这样就相当于友元,这个函数就可以访问私有/共有/保护里面的数据

1、友元函数

这个声明放在哪里都可以

2、友元成员

3、友元类

友元是单向的

注意

十四、对象函数

案例

会先调用对象成员的构造函数,再调用自己的构造函数,析构相反

十五、const的用法

1、常数据成员

2、常成员函数

3、常对象

案例

const常对象只能调用const的数据成员

相关推荐
李日华大战鸡红1 小时前
滑膜观测器(学习记录)
stm32·单片机·学习·matlab·机器人
传奇开心果编程2 小时前
【现代声明式UI学与练】第4课 列表渲染与 key——如何高效渲染列表、key 的作用、列表重排时的状态保持
学习·flutter·react native·ui·swiftui·android jetpack
传奇开心果编程2 小时前
【Compose Multiplatform 跨端开发学与练】第5课 网络与数据层
android·网络·学习·ui·ios·kotlin·composer
yt004yt3 小时前
园区 VOC 绿岛集中治理项目,管网与监测系统设计要点
大数据·学习
一条破秋裤3 小时前
06_从设备读数据_字符设备read_write流程
学习
m4Rk_4 小时前
【论文阅读】Agent 记忆机制(92):EMPO²——让 Memory 从经验复用走向主动探索
论文阅读·人工智能·学习·开源·github
欣欣之王来了5 小时前
前端开发学习路线图:2026年Vue方向最新版
前端·学习·架构·项目·vue3教程
wdfk_prog5 小时前
LWIP教程 00:从网线上的电信号到 lwIP——PHY、MAC、DMA 与 `netif` 的完整边界
运维·网络·笔记·学习·ip
m0_734172426 小时前
Python用zip配对前先检查长度
python·学习
乌暮6 小时前
拆解网页的底层逻辑:用费曼学习法讲透 HTML 与 CSS
前端·css·学习·html