C++类和对象基础知识详解
2021/7/10 1:06:32
本文主要是介绍C++类和对象基础知识详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.对象(object)
1.一切皆是对象。如下图:
- ·女人是一个对象
- ·鞋子是一个对象
- ·包包是一个对象
- ·衣服是一个对象
- ·裤子是一个对象
- ·手链是一个对象
- …
2.对象由对象组成.
这里人这个对象,由鞋子、包包、衣服、 裤子、手链等对象组成。
3.每个对象都有:
- a)数据(描述对象的属性)
- b)函数(行为操作代码)
2.类(class)
- ·具有相同属性和行为的对象,我们可以把它抽象为类。
- ·类是对象的抽象
- ·对象是类的特例
.
3.面向对象的程序设计(OOP)
·面向过程的程序设计(Process oriented programming)
在面向过程时,我们重点围绕功能,用一个函数去实现一个功能。
·面向对象的程序设计(Object oriented programming)
在面向对象时,我们重点去描述对象的数据和功能。
a)设计所需的各种类。
b)定义各种各样的对象。
c)向相关的对象发送消息,完成具体的任务。
4.类的声明和对象的定义
1.设计类
关键字class
- ·数据成员
- ·成员函数
- 访问权限
private
–私有的 私有的成员只能在类的内部访问
public
–公有的 公有的成员才可以在类的外部使用
protected
–受保护的 先放一放。继承
为了考虑到封装和信息隐藏
,我们一般的使用原则是:
数据成员 都用private
成员函数 都用public
- ·更加常用的方式
1.只在类的内部声明数据成员和成员函数。
2.在类的外部定义类的成员函数。
3.记得加上类的作用域。
class和struct的区别
class 的默认权限是private
struct的默认权限是public
2.定义对象
·先声明类 再定义对象
·声明类的同时,定义对象
·省略类名 直接定义对象
3.访问对象的函数
对象名.函数名;
4.命名规范
·类名首字母大写
·对象名首字母小写
5.并非所有的成员函数都必须是公有的
!
如果一个成员函数,它只需要在类的内部使用,也就是这个函数只被类中的其他成员函数调用,而不需要再类的外部使用,那我们将它作为私有的成员函数。
5.类的成员函数
1.访问权限:
·一般将需要被外界调用的成员函数指定为public,这是类对外的接口。
·若函数只在类的内部调用,用来完成其他成员函数的功能,应该指定为private。
·成员函数可以访问本类中任何的成员,无论他是私有的还是公有的。
2.inline成员函数 内置函数
内联函数:
·使用内联函数节省时间,增加目标程序的长度。
·将规模很小,使用频繁的函数声明为内联函数。
·内联函数不能包含复杂的循环语句和switch语句。
·inline只是程序员对编译系统的建议。
inline成员函数:
·在类的内部直接定义的函数将被隐式地指定为内联函数。
·在类的外部显式地声明内联函数。声明 定义 inline
对象的存储方式:
- ·各个数据分开存储。
- ·成员函数共享内存。
- ·跟访问权限无关。
6.访问对象成员
·私有成员只能在成员函数中引用。直接使用成员名即可。
·公有数据成员可以在类外访问public,但是考虑到封装和信息隐藏。不要这样做。
·公有成员函数可以在类外访问,这是类对外的接口。
1.访问对象中成员的3种方法:
·对象名+成员运算符
·指向对象的指针 + 指向运算符
·对象的引用变量 + 成员运算符
2.私有数据成员如何访问?
私有数据成员,只能通过成员函数
访问。
如果要获取私有数据成员的值。
返回值:
指针:
引用:
这种set和get函数去设置和获取私有数据成员是很多设计者常用的方法。几乎已经成为惯例。
7.类的封装与信息隐藏
函数的原型:
函数的封装性:
1.函数的功能是什么?
2.函数的名字是什么?
3.函数有几个参数?
4.每一个参数的类型是什么?
5.函数的返回值是什么?
函数的内部:
1.采用什么样的计算方法?
2.采用什么样的程序结构?
3.怎样得到计算结果?
4.怎么返回数据?
5.性能如何保证?
这样的话,有些人专注于函数内部的具体实现。有些人则只需要知道函数怎么用就可以了。对于一个开发团队来讲,这样的设计绝对是恰到好处的。
对于类来说也是同样的道理:
·C++通过类来实现封装性,把数据和跟数据相关的函数封装在类中。
·声明一个类之后,用户只需要调用类的公用接口
来实现具体的功能—消息传递
·用户不必关心功能是如何实现的,只需要知道用哪一个函数可以实现什么样的功能–信息隐藏
·类中被操作的数据是私有的,函数的实现细节是隐蔽的–私有实现
补充2个概念:
方法:类的成员函数
消息:对公有成员函数的调用
如果在一个项目开发里面涉及到很多个类,可能几百上千个类,那么类和类之间的关系式错综复杂的,如果在设计这样的程序里面,我要把每一个类里面的细节都搞清楚,这样的认知成本就太高了。而现在有了封装和信息隐藏,在整个团队里面,我们只需要知道类的公用接口就可以了,而不需要知道它的私有实现。分工明确,开发效率高。
面向对象的程序设计特性:
封装性
将数据和相关的代码封装在一个对象中。各个对象之间相对独立,互不干扰。
将对象的数据隐藏,隐藏内部实现的细节,只留下一部分接口。
抽象性
类是对象的抽象,对象是类的特例。
继承性
把最重要的特征,解决软件的重用。
多态性
由继承性产生相关不同的类。不同的对象,对象对同样的消息会做出不一样的反应。
基于对象的程序设计: 封装 抽象
面向对象的程序设计:封装 抽象 继承 多态.
这篇关于C++类和对象基础知识详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享