第一节课:C过度到C++--之一

为什么要学习C++?

C++是对C语言的升级,或者说C++是对C语言的重新封装,所以说C++有着和C差不多高的效率,以及有着和C一样的灵活性。除此自外,C++还有着很强的抽象能力,并且也还有着很强的生产能力,不过在生产能力方面,跟广为人知的java语言还是有些差距的,但是这个差距在努力的减小。所以说C++基本上囊括了市面上主流编程语言的所有优点。比如java语言的高生产力,高抽象性;C语言的高效率以及高灵活性等优点。所以说,C++是一些列编程语言的结合体,拥有着各种编程范式。

什么是编程范式?

编程范式就是计算机编程的基本风格或典范模式。
C语言就是一种过程式;
C++就支持多种编程范式,比如过程式、基于对象(object-based)、面向对象、数据抽象式、模板编程式、函数式等等。

C++相对于C语言新增加的一些特性

bool类型

C++支持支持原生态的bool类型。其它的各种各样的布尔类型都是采用的宏定义的方式,我们在使用的过程中可能会出现一些意想不到问题。所以建议使用原生态的bool。

但是有人就会反问到,我们也可以在C语言中使用bool啊,bool怎么是C++中的新特性呢?

毋庸置疑,在C语言中我们是可以使用bool,但是我们还需要包含一个名字叫stdbool.h的头文件,这样我们才能够使用bool类型。

头文件

C++的头文件形式:iostream
C语言的头文件形式:stdio.h
由C语言继承过来的,符合C++标准的C语言标准头文件形式:cstdio

域运算符

域运算符的符号是::,即两个冒号来表示。域运算符可以指定访问某个命名空间的变量,是用来区分命名空间的,这样可以避免变量名的冲突。比如:
namespace aaa
{
int a = 10;
}
namespace bbb
{
int a = 20;
}
int main()
{
int c = aaa::a + bbb::a;
return 0;
}
我们定义了两个同样名字的变量a,但是这样不会出错,因为我们把这两个变量封装在了不同的明明空间中,我们只要通过命名空间和域作用符::就可以访问指定的变量了。

new和delete

在C语言中,申请堆上的空间时有malloc和free,而C++中有对应的new和delete对堆空间的操作。注意:malloc对应的一定是free,new对应的一定是delete。
有一点需要注意的是,new出来的变量和数组在释放的时候有所区别,
int *pArray = new int[10];
delete[] pArray;
上面是申请的数组,释放的时候一定要加上[]数组符号,如果不加[]这个符号,将会出错。

重载Overload

函数重载是C++相对于C的一个重要的新特性,函数重载说白了其实很简单,同一个函数名,由于参数的个数、类型、顺序不同而可以构成多个同名的函数,我们在调用的时候,编译器会根据我们传递的参数进行函数的匹配,表面上达到了一个函数实现了多种功能的效果.

命名粉碎机制

但是实际上,编译器对重载函数生成的不只是一个函数,事实上是有几个重载函数,就生成几个函数,我们可以说编译器使用了命名粉碎机制。这个机制是由C++编译器生成的。命名粉碎机制在我们自己的模块中使用重载函数显然是很好的,但是如果我们把我们的模块提供给别人来使用时,就会出现很多问题,由于命名粉碎机制,已经改变了原来的函数名,所以会导致找不到函数名。所以有时候,我们会避免C++的命名粉碎机制,会强制以C语言的方式进行编译,只要加上extern “C”{},就可以了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值