百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

韦东山第4期Android视频-C++快速入门-第2课第1/2节

xsobi 2024-12-28 16:18 1 浏览

该系列文章主要整理了C++相关的知识点。对我个人而言,学习C++是为了能阅读理解Android源码里的C++代码,进而理解Android系统为什么要使用C++,并且是如何利用C++实现特定功能的。在Android实战中加深对C++的理解,边学边用,这样学习的效率才是最高的。

C++系列往期文章:

韦东山第4期Android视频-C++快速入门-第1课第1节_c++类的引入-学习笔记

参考:

《韦东山第4期教学视频-Android-C++快速入门-第2课第1节_c++基础知识_访问控制》

《韦东山第4期教学视频-Android-C++快速入门-第2课第2节_c++基础知识_程序结构》

《C++语言程序设计(第3版本)》郑莉,大学入门教材,浅显但是有些知识点解释不清楚。

代码下载:

https://github.com/wuweidong0107/cpp_projects


抽象性

什么是类和对象?

类是一类对象的模板,对象是类的具体实例,举个例子:

类通过抽象而来的,抽象是面向对象的一个重要思想。

封装性

C++中,类里的变量和函数都被称为类成员,变量被称为数据成员,函数被称为成员函数。

类成员的3种访问属性:

public: 类里类外都可以直接访问;

private: 只能被类里的成员函数访问,类外不能直接访问,但是可以借助public的成员函数间接去访问private数据成员;

protected: 如果不涉及继承,用法和private类似,但是被继承后情况就不一样的。继承分为公有继承、私有继承、保护继承,不同的继承方式对protected修饰的成员的影响不一样。目前不需要太深入了解,等后面学习到继承的概念后再展开说明。示例代码:

this指向调用函数的当前对象。


什么是封装性?

通过上述3种访问属性,将类的内部实现封装起来。简单的形容就是"不要告诉我你是怎么做这个工具的,只要你教会我怎么用这个工具就行了",封装的优点如下:

  1. 将变化隔离
  2. 便于使用
  3. 提高重用性
  4. 提高安全性

类的概念只是封装的其中一个表现而已,包/组件/框架等也符合封装的思想。

嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。

点击这里找小助理0元领取:加微信领取资料





程序结构

内联函数

C++中,如果成员函数是在类的实现的,这个函数被称为内联函数,内联函数的函数体会在编译时被插入到每一个调用它的地方,这样会提高运行效率,但是是增加空间开销,只有简单的成员函数才适合声明为内联函数。

内联函数有2种声明方法:隐式声明和显式声明。

隐式声明是函数体直接放在类内,如下:


显式声明,效果和隐式声明一样:



在类外实现成员函数

类里一般只定义成员函数,而将函数的实现放在类外面,如下:


类有封装的特点,所以对于类的的调用者来说,只关心类对外提供的什么API,而不在乎这些API是怎么实现的,所以将类的定义和类的实现分别写在.h和.cpp文件里,可以让程序的结构更清晰,对调用者更友好,如下:



命名空间

一个项目通常都不会仅由一个人来开发完成,不同的人开发同一个系统,不可避免地会出现变量或函数的命名冲突,当所有人的代码各自测试没有问题后,将所有人的代码结合到一起,就有可能因为变量或函数重名而导致编译报错。

命名空间是C++提供的一种解决标识符名字冲突的方法。一个命名空间就是一个作用域,在不同名字空间中命名相同的标识符代表不同的实体。命名空间本质上就是一片被命名的内存区域,里面的东西通过空间名+标识符名的方式被调用,如下:


.h文件里的定义位于namespace里,那么.cpp文件中的实现也要保存在对应namespace里

。通过.h可以反推出.cpp里的内容,这里不再贴cpp的代码。


上面的例子中Person这个类并没有跟其他标识符冲突,每次都A::Person来创建对象太麻烦了。简化的方法是用using关键字来导入标识符:


也可以直接导入整个A空间,那么只要程序里调用的标识符跟A空间里的标识符一致,都会采用为A空间里定义的标识符,如下:



如果有人头脑发热,想要这样做:



位于std命名空间的C++标准程序库

std是standard的缩写,C++标准程序库中的所有标识符都被定义于一个名为std的namespace中,例如:


标准库里最常用的2个标识符就是cout和cin,cout和cin是什么?

C++中数据的输入和输出是通过stream类来实现的。cout是一个ostream类的对象,它有一个成员运算符函数operator<<,运算符<<的功能被重载了,被重载成每次cout执行<<时,就会将<<后面的数据输出到标准输出中。对于cin,则是istream流类的对象,其重载了>>运算符。

参考:

http://www.cplusplus.com/reference/iostream/cout/?kw=cout

重载的概念目前理解不了是正常的,有一点基本概念就行了,重要的是会用cout和cin来输出和输入数据,如下:


格式化输出

参考:

http://www.cplusplus.com/reference/ios/hex/?kw=hex

http://www.cplusplus.com/reference/iomanip/setw/?kw=setw

下一篇的内容:重载、指针、引用。

文章链接:
https://mp.weixin.qq.com/s/D64krAXNaewZVimeEry_5Q

转载自:老吴嵌入式 ,作者可爱的东东

文章链接:韦东山第4期Android视频-C++快速入门-第2课第1/2节_c++基础知识_访问控制/程序结构-学习笔记

相关推荐

C++中的多态(动态多态)究竟是如何实现

为了叙述简便,在本文中,将动态多态性一律简化为多态性。在前面的文章中,我们已经简要介绍了C++的多态性,也介绍了C++的虚函数表,下面,我们来看看C++是如何利用虚函数机制来实现多态性的。(题外话:实...

C++面向对象开发的四大特性:封装、抽象、继承、多态

1、封装封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制程序对类属性的读取和修改。对于类的内部,成员函数可以自由修改成员变量,进行更精确的控制;对于类的外部,良好的封装能够减少耦合,同时隐藏实现...

C#知识|继承与多态

哈喽,你好啊,我是雷工01ProtectedProtected关键字表示这个属性只能给“子类”使用,即只能在子类内部使用,不能通过子类对象去使用;02父类定义父类...

朝文分享(54):深入C++(二十一)——多态

分享兴趣,传播快乐,增长见闻,留下美好!亲爱的您,这里是LearningYard新学苑。...

C++基础语法梳理:引用、封装、继承和多态

本期是C++基础语法分享的第六节,今天给大家来分享一下:(1)引用;...

继承和多态概念及语法

继承是面向对象编程的重要概念之一,它指的是一个类可以从另一个类中继承属性和方法。...

Java的多态如何实现的?

面向对象编程语言三大特征:继承、封装、多态。虽说是三大特征,但其实从多态的角度看,继承和封装都是为了实现多态而准备的,尤其是在一些大型优秀的框架上,多态的使用随处可见,所以说多态是一个十分重要的知识点...

C++中的多态性

封装、继承、多态是C++的三大基本特性。封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);封装和继承的目的都是为了"代码重用",多态则是为了实现另一个目的:接口...

讲解一下Java 中的多态

多态(Polymorphism)属于面向对象三大特征之一,它的前提是封装形成独立体,独立体之间存在继承关系,从而产生多态机制。多态是同一个行为具有多个不同表现形式或形态的能力。重载式多态,也叫编译时多...

java编程笔记,多态的好处和弊端

测试代码:1.创建Animal.java类作为父类2.创建Cat.java类作为Animal的子类3.创建一个Dog.java类作为Animal的子类4.创建Test.java测试类代码说明:多态的好...

C/C++编程笔记:C++多态性知识详解

多态性一词意味着具有多种形式。简而言之,我们可以将多态定义为消息以多种形式显示的能力。一个真实的多态示例:一个人同时可以具有不同的特征。像男人一样,是父亲,丈夫,雇员。因此,同一个人在不同情况下会表现...

用通俗易懂的多态世界观实例:理解python类的多态

什么是python类的多态python的多态,可以为不同的类实例,或者说不同的数据处理方式,提供统一的接口。用比喻的方式理解python类的多态...

多态——制作饮品

classAbstractDrinking{public://煮水virtualvoidBoil(){cout<<"煮农夫山泉"<&...

python之多态、继承、重写篇

#-*-coding:UTF-8-*-classAnimal:defrun(self):print("动物会跑。。")defsl...

Java面向对象——多态

前两天已经相继介绍了Java面向对象的三大特性之中的封装、继承,所以今天就介绍Java面向对象的三大特性的最后一项,多态~首先讲一下什么是多态,以及多态需要注意的细节什么是多态:一个对象具备多种...