C++学习前的过渡
芈安
这个作者很懒,什么都没留下…
展开
-
namespace 命名空间作用域
C中只有 全局作用域 和 局部作用域C++中为解决命名冲突,提出这么一个概念namespace TL13{ int a = 10; int b = 20; int Sum(int a,int b) { return 0; }}使用方法:TL13::sum(10,20);//使用域名using TL13::sum;//using声明,把声明后的符号暴露在当前using声明所在作用域using namespace TL13;//usin原创 2021-01-19 17:48:17 · 247 阅读 · 1 评论 -
new与malloc,delete与free区别
malloc 只开辟空间 new 不仅开辟空间,系统还会调用构造函数free 只收回空间 delete 先调用析构函数 再收回空间new / delete 是关键字或运算符,可以重载malloc / free 是函数new返回值类型是安全的,不需要强转;大小由系统计算malloc返回值类型不安全,需要强转;大小需要使用者计算void* malloc(size_t size);//malloc函数原型void free(void* ptr);//free函数原型..原创 2021-01-19 17:47:40 · 93 阅读 · 0 评论 -
C和C++的相互调用
C++中调用C代码当编译器编译C++文件时,会优先选择cpp的编译方式而C代码应该用C的编译方式编译所以用以下处理方式#ifdef __cplusplusextern "C"{#endif C代码 #ifdef __cplusplus}#endifC中调用C++代码//C++源文件可修改//用extern "C"//C++源文件不可修改//加中间层//写一个接口,用C语言的方式编译,接口中调用C++函数int a原创 2021-01-19 17:46:36 · 159 阅读 · 0 评论 -
inline函数
inline函数 在编译阶在调用点直接代码展开不生成符号,仅文件内可见inline函数与宏的区别: inline函数在编译阶段 有类检查和安全检查 安全 宏 在预编译阶段 直接进行文本替换 不安全inline函数和static修饰的函数有什么区别: inline直接代码展开,没有开栈清栈开销 static 有开栈清栈开销 生成符号 local属性 只在本文件可见因为没有有开栈清栈开销,所以效率高,那为什么不把所有函数设为inline函数呢inline缺陷:以代码膨原创 2021-01-19 17:45:25 · 103 阅读 · 0 评论 -
函数重载
C语言中:不能进行函数重载C++中:可以进行函数重载这与函数符号生成规则有关:C:只和函数名称有关C++ :与函数原型有关函数重载 1.函数返回值类型不同 不够成重载 因为函数调用时会产生二义性 2.函数名称不同 不够成重载 3.形参列表 1)形参类型不同 构成 2)形参个数不同 构成 3)形参顺序不同 构成函数重载三要素:1.同名2.不同参3.同作用域(源于就近原则)重载决议过程:精确匹配==>隐式转换原创 2021-01-19 17:44:33 · 103 阅读 · 1 评论 -
函数默认值
函数默认值概念:函数设计过程中给予形参默认值,没有实参的话,有默认值函数默认值赋给规则:1.函数的默认值自右向左赋予, 函数调用过程,实参入栈顺序自右向左; 实参与形参匹配,自左向右2.默认值不能重复赋予3.默认值一般设在声明上 若声明与定义分开,默认值在定义上 调用点又在定义点之前,会导致默认值会失效...原创 2021-01-19 17:41:26 · 883 阅读 · 0 评论