0
点赞
收藏
分享

微信扫一扫

OpenHarmony(鸿蒙南向)——平台驱动开发【MIPI DSI】

小迁不秃头 2024-09-28 阅读 14

目录

什么是c++?

 C++关键字(C++98)

一、命名空间

命名空间定义

1.正常的命名空间的定义

域:

命名空间域

展开命名空间

 std:所有C++库命名空间

命名空间可以嵌套

二、C++输入&输出

<<:

>>:

std命名空间的使用惯例:

三、缺省参数

缺省/默认参数:

全缺省(给出所有参数):

半缺省(从右往左连续给):

注意:

四、函数重载

C++支持函数重载的原理--名字修饰(name Mangling) 

*有关于预处理、编译、汇编、链接的详解,可见:

五、引用(别名)

引用概念

使用方法:

引用特性:

1.引用必须初始化

​编辑

2.引用定义后,不能改变指向

3.一个变量可以有多个引用,多个别名

常引用:只能权限缩小,不能权限扩大

使用场景:

 1、做参数(a、输出型参数 b、对象比较大,减少拷贝,提高效率) 这些效果,指针也可以,但是引用更方便

a、输出型参数

b、对象比较大,减少拷贝,提高效率

2、做返回值(a、修改返回对象 b、减少拷贝提高效率)

面试题:引用和指针的区别:

六、内联函数

面试题:宏的优缺点

内联函数概念:

查看方式:

​编辑inline 特性

inline是一种以空间换时间的做法

内联说明只是向编译器发出一个请求,编译器可以选择忽略这个请求:

inline不建议声明和定义分离,分离会导致链接错误。因为inline被展开,就没有函数地址 了,链接就会找不到。

为什么要防止链接冲突?

在.h未做声明和定义分离时,为什么会出现这样的报错?

以下有三种解决方案:

1、当然就是声明和定义的分离

2、加静态static,修饰函数时,与全局函数相比,有链接属性,只在当前文件可见。(不会进符号表)

3、使用内联(内联也不支持声明与定义分离)

总结:若需在.h中定义函数:

七、auto关键字(C++11)

auto简介

auto使用示例:

auto不能推导的场景

八、基于范围的for循环(C++11)

范围for的语法

范围for的使用条件

九、指针空值nullptr(C++11)

注意:


什么是c++?

 C++关键字(C++98)

C++总计63个关键字,C语言32个关键字。

以下是学习c++时会用到的关键字。

一、命名空间

命名空间定义

1.正常的命名空间的定义

命名空间域

展开命名空间

 std:所有C++库命名空间

命名空间可以嵌套

二、C++输入&输出

<<:

>>:

ps:关于cout和cin还有很多更复杂的用法,比如控制浮点数输出精度,控制整形输出进制格式等 等。因为C++兼容C语言的用法,这些又用得不是很多,我们这里就不展开学习了。

三、缺省参数

缺省/默认参数:

全缺省(给出所有参数):

半缺省(从右往左连续给):

四、函数重载

C++支持函数重载的原理--名字修饰(name Mangling) 

五、引用(别名)

引用概念

使用方法:

引用特性:

常引用:只能权限缩小,不能权限扩大

使用场景:

 1、做参数(a、输出型参数 b、对象比较大,减少拷贝,提高效率)
 这些效果,指针也可以,但是引用更方便

2、做返回值(a、修改返回对象 b、减少拷贝提高效率)

面试题:引用和指针的区别:

如图:

六、内联函数

面试题:宏的优缺点

知识衍生:实现两个数相加的宏函数:

易错点
1、不是函数       #define ADD(int a, int b) return a+b;
2、分号#define ADD(a,  b) a+b;
3、括号控制优先级#define ADD(a,  b) ((a)+(b));
核心点:宏是预处理阶段进行替换

为什么加里面的括号:

由此我们引入内联:

内联函数概念:

查看方式:

此时再打开反汇编就可以观察到,函数在此时直接展开

inline 特性

inline是一种以空间换时间的做法

内联说明只是向编译器发出一个请求,编译器可以选择忽略这个请求:

inline不建议声明和定义分离,分离会导致链接错误。因为inline被展开,就没有函数地址 了,链接就会找不到。

总结:若需在.h中定义函数:

七、auto关键字(C++11)

auto简介

auto使用示例:

八、基于范围的for循环(C++11)

范围for的语法

范围for的使用条件

九、指针空值nullptr(C++11)

举报

相关推荐

0 条评论