C++基础——C++对C的升级

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Eleanor_12/article/details/54896361

1.定义的声明

C语言相比,C++中更加强调语言的“实用性”,所有的变量都可以在需要使用时再定义

例如:

for(int i = 0; i < 10; i++)
{
for(int j = 0; j < 10; j++)
{
    ......
}
}

两个计数变量都可以在使用的时候定义,这时他们的作用范围只在这个循环中,循环结束就将被释放

2.register关键词的变化

首先,register关键词的作用是请求编译器将局部变量存储于寄存器中

C语言中,使用“&”无法获得register变量的地址,是因为“&”变量获取的是内存的地址,而寄存器的地址是无法获得的

但在C++中,C++编译器有自己的优化方式,可以取得register变量的地址,编译器发现程序中需要取register变量的地址时,register对变量的声明变得无效

3.const关键字的变化

C语言中,使用const声明的变量称为只读变量,变量空间可以修改但不可以通过变量名来进行修改

但在C++中,对这一点进行了强化,使用const修饰的变量即变为常量,不能修改其值

4.内存分配与释放(new/delete)

变量申请/释放格式:type *pointer = new type     delete pointer

数组申请/释放格式:type *pointer = new type[N]     delete[] pointer

C++中的动态内存分配:

C++中通过new关键字进行动态内存申请

C++中的动态内存申请是基于类型进行的

delete关键字用于内存释放


new关键字与malloc函数的区别:

new关键字是C++的运算符,malloc是由C库提供的函数

new以具体类型为单位进行内存分配,malloc只能以字节为单位进行内存分配

new在申请单个类型变量时可进行初始化,malloc不具备内存初始化的特性

5.引用VS指针

C++中,引入了引用的概念,引用就是给一个变量起别名

定义引用的一般格式:&引用名 = 变量名

注意:定义引用时,一定要初始化,致命该引用变量时谁的别名


引用可以作为函数的形参和返回值

作为形参:例如交换两个数值的函数,在C语言中void swap(int *a,int *b),在C++中可以写为void swap(int &a,int &b),使用引用作为函数的形参,避免使用指针,引用作为参数对形参的任何操作都能改变相应的实参数据

作为返回值:函数返回引用的一个主要目的时可以将函数放在赋值运算符的左边


引用和指针的区别:

引用访问一个变量是直接访问,而指针是间接访问

引用是一个变量的别名,本身不单独分配自己的内存空间,而指针有自己的内存空间

引用一经初始化不能再引用其他变量,而指针可以

6.函数的升级

①内联函数

②函数重载:相同的作用域,如果两个函数名称相同,而参数不同,我们把它们称为重载overload

函数重载的条件:

形参数量不同

形参类型不同

形参的顺序不同

形参数量和形参类型都不同

调用重载函数时,编译器通过检查实际参数的个数,类型和顺序来确定相应的被调用函数

注意:返回值不能作为重载的判断条件

③name managlingextern C”:C++为了支持重载,需要进行name managling,即将函数名进行改编,所以有时会出现C++无法调用C语言库里的函数的情况,这时就需要用到extern C”来实现CC++混合编程


7.命名空间

由于C语言中所有的全局标识符共享同一个作用域,标识符之间可能发生冲突,所以C++提出了命名空间的概念,命名空间将全局作用域分成不同的部分,不同命名空间中的标识符可以同名而不会发生冲突

命名空间的定义


命名空间的使用:

使用整个命名空间:using namespace name

使用命名空间中的变量:using name :: variable

猜你喜欢

转载自blog.csdn.net/Eleanor_12/article/details/54896361