C++进阶(一) :C和C++的区别

在这里插入图片描述

1、main函数定义

在 C++ 中 int main() 和 int main(void) 是等效的,都代表参数默认,但在 C 中int main() 代表编译器对是否接受参数保持沉默,int main(void)表示无参数。

2、数据类型

C++新增布尔型(bool)及宽字节型(wchar_t)

3、关键字

C++特有关键字:
四种强制类型转换关键字:

  • static_cast:内建类型之间的强制类型转换及继承关系类的指针及引用之间的转换,不做类型安全检查
  • dynamic_cast:继承关系类的指针及引用之间的转换,做类型安全检查即只能子类去强制转换成基类。
  • const_cast:间接去除或增加任意类型的变量(包含指针、引用)的const属性。
    reinterpret_cast:强制类型转换、任意无关的指针类型包括函数指针都可以进行转换。

mutable:用于修改const函数中的变量
explicit:((显式的)的作用是"禁止单参数构造函数"被用于自动型别转换)
export:当需要引用模板类型,则必须在定义这些模板类对象和模板函数时,使用标准 C++ 新增加的关键字 export(导出)。
C++中改变的关键字:
const:(1)const修饰的成员函数不能修改任何的成员变量(mutable修饰的变量除外),所以里面不能调用非const函数
(2)用const定义了一个常量后,不会分配一个空间给它
auto:C语言中,在函数内定义变量时,如果没有被声明为其他类型的变量都是自动变量,且定义时不必初始化。
而在C++中auto关键字是一个类型说明符,使用前必须初始化,以便进行类型推导。
应用场景为:

  • 1、用于代替冗长复杂、变量使用范围专一的变量声明。
  • 2、在定义模板函数时,用于声明依赖模板参数的变量类型。
  • 3、模板函数依赖于模板参数的返回值
    auto类型推导无法推导出引用,它仅仅是一个占位符,它并不是一个真正的类型,不能使用一些以类型为操作数的操作符,如sizeof或者typeid。

4、内存分配

C++中一般使用new/delete分配删除内存,而C中一般使用malloc/free分配删除内存

5、struct结构体不同

(1)C++语言将struct当成类来处理的,所以C++的struct可以包含C++类的所有东西,例如构造函数,析构函数,友元等
(2)C++使用结构体声明变量时,可以不带struct关键字

6、引用

C++相对于C,多了一个引用。详情见引用详解
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chiang木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值