Linux嵌入式开发 C++:day2

面向对象三大特征:
封装、继承、多态
【编程语言的发展】
机器语言
汇编语言
高级语言
面向对象的语言
【面向对象的特点】
1. 将操作的事物看成对象(万物皆对象)
2. 不需要自己亲自去做事,而是直接调用对象的行为完成需要的操作
3. 简化复杂的分布操作,提高编程效率
【类和对象】
类:一个同样性质的一群对象的共性,
抽象成一个概念,这个概念作为判断某个个体是否属于这个类的依据。
(人类,猫类,狗类)
对象:某个类实际存在的个体。是抽象概念(类)的具象化。
【问题(在现在的知识体系中)】
单独一个类有意义吗:无意义。
可能存在只有对象没有对应的类吗? 不可能的。
【类的内容】
类包括两方面的内容:
属性:用来描述对象的数据元素称为对象的属性
注意:属性不是严格的称呼,为了适应初学者暂且这么叫,准确的说法是“成员变量”。
行为:对对象的属性进行的操作称为对象的行为
注意:行为不是严格的称呼,为了适应初学者暂且这么叫,准确的说法是“成员函数”。
【正常的思路】
1.先写类,定义此类需要的一些特性(属性和行为)
2.按照类中定义的概念去“生产”对象。
3.对象执行特定的行为去完成特定的工作。
类的用法:1.写类:
2.去执行工作:
【new关键字】
对象的初始化可以使用new,也可以不使用new,区别如下:
不使用new实例化的对象,对象是在栈内存上开辟的,
在其生命周期结束后,自动调用析构函数删除该对象。
使用new实例化的对象,对象是在堆内存中开辟的,
需要程序员手动调用delete来删除该对象。
注意:栈内存不适合使用较大的对象 和 需要精准控制回收的对象。
【delete关键字】
delete可以释放new出来的对象占用的堆内存,栈内存的对象不能调用delete
补充:
【封装】
封装指的是,将类的一些属性和其他细节隐藏,重新提供外部对象调用的接口。
隐藏属性:
属性获取:
精准读取属性:
【构造函数】
构造函数用来生成一个类的对象。
构造函数必须跟类名相同
构造函数没有返回值
默认情况下编译器会自动添加内容为空的一个无参构造函数
如果手动写了构造函数,编译器将不再提供无参构造函数
构造函数可以有多个,即函数的重载
构造函数通常用于对象属性的初始化
构造函数:
main中:
【构造初始化列表】
这是一种很简便的写法,可以根据实际情况决定是否采用。
1.构造初始化列表相当于直接初始化,执行效率更高。
2.如果成员变量是const,只能使用构造初始化列表。
3.如果影响代码的可读性,可以不使用构造初始化列表
构造初始化表:
main中调用:
注意事项:
【拷贝构造函数】
每个类提供了默认的拷贝构造函数,用把一个对象变量拷贝到另一个对象变量。
copy函数:
结果:
他们的属性一样,但是地址不同。
对象的独立性:
同一个类下的对象,属性值互不干扰。
改变mp1的属性值看看mp2变不变:
默认的拷贝构造函数可以不用写在类中:
结果:
【浅拷贝和深拷贝】
默认的拷贝构造函数是浅拷贝。
如果一个类的成员变量有指针,需要使用深拷贝。
深拷贝可以防止浅拷贝带来的两个指针指向一个变量的问题。
深拷贝:
拷贝函数:
谨慎使用指针作为成员变量!
换言之,能使用引用的场景就不要使用指针!
【析构函数(destructor)】
析构函数是与构造函数对立的函数,是在一个对象的生命期即将结束的时候,应该回收该对象占有的资源,或是完成一些清理工作。
析构函数没有返回值,也没有参数,因此不能被重载。
析构函数的格式是在类名前加一个~
栈内存的对象生命周期结束后会自动调用析构函数
堆内存的对象需要手动调用delete,才会触发析构函数的调用
通常情况下,不需要手动调用析构函数。
【作用域限定符 和 名字空间】
作用域限定符:
1.作用是分辨不同的作用域下的重名问题
2.现阶段可以在类内声明函数,在类外定义函数。
3.在某些情况下,必须使用作用域限定符来调用或者定义(如static变量的定义和static函数的调用)
定义放到类外
类和结构体的区别
new 和 malloc区别
delete 和 free区别
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值