![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
--------【C到C++的升级】
文章平均质量分 78
加油11
模仿模仿再模仿!
展开
-
C和C++相互调用
1 C++和C相互调用 实际工程中C++和C代码相互调用是不可避免的。 C++编译器能够兼容C语言的编译方式。 C++编译器会优先使用C++编译的方式。 extern关键字能够强制让C++编译器进行C方式的编译。 extern “C” { // do C-style compilation here } 编程实验:C++调用C函数 // add.c #include "原创 2018-01-11 11:19:16 · 194 阅读 · 0 评论 -
命名空间
1 C++中的命名空间 在C语言中只有一个全局作用域 C语言中所有的全局标识符共享同一个作用域 标识符之间可能发生冲突。 C++中提出了命名空间的概念: 命名空间将全局作用域分成不同的部分; 不同命名空间中的标识符可以同名而不会发生冲突; 命名空间可以相互嵌套; 全局作用域也叫默认命名空间。 注意:不同的命名空间中可以定义相同命名的全局变量和函数,但是调用的时候必须采用 命名空间名字:原创 2018-01-11 16:50:59 · 238 阅读 · 0 评论 -
内联函数分析
1 常量与宏回顾 C++ 中const常量可以替代宏常数定义,如: const int A = 3; #define A 3 C++中是否有解决方案替代宏代码片段呢? 2 内联函数 C++中推荐使用内联函数替代宏代码块。 C++中使用inline关键字声明内联函数。 inline int fun(int a, int b) { return a < b ? a :原创 2018-01-07 17:30:13 · 199 阅读 · 0 评论 -
进化后的const分析
1 C语言中的const const修饰的变量是只读的,本质还是变量。 const修饰的局部变量在栈上分配空间。 const修饰的全局变量在只读存储区分配空间。 const只在编译器有用,在运行期无用。 const修饰的变量不是真的常量,它只是告诉编译器该变量不能出现在赋值符号的左边。 C语言中的const使得变量具有只读属性。 const将具有全局生命周期的变量存储于只读存储区。 const原创 2018-01-03 16:49:17 · 244 阅读 · 0 评论 -
引用
1 变量名回顾 变量是一段实际连续存储空间的别名; 程序中通过变量来申请并命名存储空间; 通过变量的名字可以使用存储空间。 问题:一段连续的存储空间只能有一个别名吗? 2 引用的基本概念 在C++中新增加了引用的概念: 引用可以看作是一个已定义变量的别名; 引用的语法:Type& name = var; int a = 4; int& b = a; // b是a的别原创 2018-01-04 12:08:06 · 233 阅读 · 0 评论 -
C到C++的升级
1 C和C++的关系 C++继承了所有的C特性。 C++在C的基础上提供了更多的语法和特性。 C++的设计目标是运行效率与开发效率的统一。 2 C到C++的升级2.1 变量定义 C++更强调语言的实用性。 所有的变量都可以在需要使用时再定义。 2.2 register关键字register关键字请求编译器将局部变量存储于寄存器中。 在C++中依然支持register关键字(存在的目的就是为了兼容C语原创 2018-01-03 11:51:22 · 371 阅读 · 0 评论 -
新型的类型转换
1 C 方式的强制类型转化 语法: (Type)(Expression) Type(Expression) 如: typedef void(PF)(int); struct Point { int x; int y; }; int v = 0x12345; PF* pf = (PF*)v; char c = char(v);//gcc编译不通过,g++编译通过 Poin原创 2018-01-12 11:36:13 · 221 阅读 · 0 评论 -
C++中动态内存分配
1 动态内存分配 C++中的动态内存分配 C++中通过new关键字进行动态内存申请。 C++中的动态内存申请是基于类型进行的。 delete关键字用于内存释放。 如: 变量申请: Type *pointer = new Type; //…… delete pointer; 数组申请: Type *pointer = new Type[N]; //…原创 2018-01-11 16:46:40 · 255 阅读 · 0 评论 -
学习C++的意义
1 常见的观点 操作系统和驱动程序都是C写的,学好C足够了。 C++在应用层用的比较多,学嵌入式的没必要。 我以后就做驱动开发,没精力也没必要学习C++了。 Linus大神都认为C++一无是处,还学它干嘛?! 2 一些历史 UNIX操作系统诞生之初是直接用汇编语言写成的。 随着UNIX的发展,汇编语言的开发效率成为一个瓶颈。 如何提高UNIX的开发效率? 1971年,Ken Thompson 和 D原创 2018-01-02 17:58:27 · 1435 阅读 · 0 评论 -
函数重载分析
1 自然语言中的上下文 你知道下面词汇中“洗”的含义吗? 洗衣服、洗脑、洗脸、洗车、洗马桶…… 结论:能和“洗”字搭配的词汇有很多,“洗”字和不同的词汇搭配有不同的含义。 2 重载的概念 重载(Overload):同一个标识符在不同的上下文有不同的意义。 如: “洗”和不同的词汇搭配有不同的含义:洗衣服、洗脑、洗脸、洗车、洗马桶…… “play”和不同的单词搭配有不同的含义:pl原创 2018-01-10 11:18:55 · 262 阅读 · 0 评论 -
函数参数的扩展
1 函数参数的默认值 C++中可以在函数声明时为参数提供一个默认值。 当函数调用时没有提供参数的值,则使用默认值。 参数的默认值必须在函数声明中指定,不能在定义中指定。 问题:函数定义中是否可以出现参数的默认值?当函数声明和定义中的默认值不同时是否会发生错误? 实例分析:默认参数值初探 #include int mul(int x = 0); int mai原创 2018-01-08 16:55:23 · 301 阅读 · 0 评论