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的数据成员

相关推荐
吃着火锅x唱着歌5 小时前
Effective C++ 学习笔记 条款43 学习处理模板化基类内的名称
c++·笔记·学习
weixin_431600446 小时前
Agent Workflow 学习向:Code 节点,比模板更强的变量加工
后端·python·学习·ai·
Xuanzang Road7 小时前
第 40 届学习强企玄奘路戈壁挑战赛:在绝境中重塑自我
学习
tju新生代魔迷8 小时前
Python学习日记3
学习
hsjiasb9 小时前
FreeRTOS学习(三十九)——最终总结
学习·学习笔记·freertos
m4Rk_10 小时前
【论文阅读】Agent 记忆机制(47):Nemori——用“预测误差”判断什么经验值得被记住
论文阅读·人工智能·学习·开源·github
约克310 小时前
2024年空调除甲醛技术参数与性能评测解析
学习
kkkkkkkkkk_Z11 小时前
学嵌入式和C语言编程数据结构|学习日记Day21:内核链表与队列学习
c语言·数据结构·学习
kdxiaojie13 小时前
Linux USB驱动阅读笔记(1)
linux·笔记·学习·usb
呼噜想睡觉13 小时前
Bootstrap3完成从导航到页脚完整页面开发
学习