C++的思想

本文深入探讨了C与C++编程语言中的关键概念,包括函数重载、多态、new/delete与malloc的区别、const特性、引用机制以及inline函数的应用等。通过对比分析,帮助读者理解这些核心概念在实际编程中的运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数重载:符号的生成规则

函数重载的三要素:1.同名 2.同参 3.同作用域

C函数名称
C++函数原型:1.形参的个数 2.形参的类型 3.函数的形参  <1>形参的个数  <2>形参的类型  <3>形参的顺序

多态:同一接口,不同的形态 

new和delete的区别

new 申请内存,调用构造函数。

delete  调用析构函数,释放内存。

1.new和malloc有什么区别

2.动态开辟内存

C语言中:

malloc是函数           void* malloc(size_t size)

free是函数               void free(void* ptr)

C++中:

new是关键字           malloc是关键字

区别:1.new是关键字    malloc是函数

2.new再自由存储区域  malloc在堆上

3.new可以做初始化  malloc单纯开辟内存

4.new可以重载    operator new 调用构造

malloc不能重载

5.new可以调用malloc    malloc不能调用new

6.new可以开辟常量    malloc不能开辟常量

const

C语言中:修饰常变量       编译阶段,常变量是否做左值   其他处理和变量是一样 

const int gdata=10;//global

C++中:修饰常量    不能作为左值,不能定义数组大小,没有编译时期的替换规则。

编译阶段,把用到常量的地方替换成常量初始化的值 

const int gdata=20;//.data1    extern

<1>一定要初始化 (初始化必须写在构造函数的初始化列表中)

<2>不能做左值    <3>不能间接修改,杜绝间接访问来修改常量内存的风险

引用&:别名(内存单元的别名)

1.一定要初始化  引用底层是* const指针,必须初始化

2.引用 不能引用 不能取地址的数据

3,引用不能改变(引用一经引用一块内存,再也不能引用其他内存)

4.引用只能使用,引用变量所引用的数据

inline函数:inline关键字修饰的函数成为内联函数,是对系统的建议,并不保证一定处理为内联。

编译   函数调用  代码展开(在编译阶段,在函数调用点将函数的代码展开,省略了函数栈帧开辟回退的调用开销,效率比较高)

inline函数和static修饰的函数的区别:

1.inline    无开栈清栈的开销      static    有

2.inline表示在编译阶段有代码的展开,内联函数不产生符号,本文件可见。递归,循环等函数结构不可能被处理为内联。

static  符号属性为1,在文本文件可见,将global变为local,

inline 和宏的区别

1.inline编译阶段处理,有类型检查和安全检查

宏:预编译阶段    无安全检查

2.inline是一种更安全的宏

inline注意事项:1.inline一般写在头文件中   2.inline是给编译器的一个建议(递归i,循环,switch等不会处理)3.inline是基于实现的,不是基于声明的。

inline的缺点:代码膨胀为代价,空间换时间

1.栈的开销 >执行的开销      设为inline

2.栈的开销 <执行的开销      不建议inline

函数的默认值:

1.从右往左依次赋予

2.不能重复赋予

3.一般写在声明上

C和C++的相互调用

1.C++调用C    使用extern "C",修饰函数声明

2.C调用C++    <1>C++源文件可修改     C++加  exter "C"    

<2>C++源文件不可修改    加中间层.cpp

3..C被调用    #ifdef_cplusplus

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值