您的位置:首页 > 编程语言 > C语言/C++

C++:C到C++的过渡

2018-01-07 20:30 253 查看
C++对C的加强



1.命名空间

为了解决合作开发时的命名冲突问题,C++ 引入了命名空间(Namespace)的概念。

 

命名空间将全局作用域分成不同的部分

不同命名空间中的标识符可以同名而不会发生冲突

命名空间可以相互嵌套

全局作用域也叫默认命名空间

1)定义

namespace 是C++中的关键字,用来定义一个命名空间,语法格式为:

namespace name

{

    变量

    函数

    类

}

name是命名空间的名字,它里面可以包含变量、函数、类、typedef、#define 等,最后由{ }包围。



2)使用方法:

1.使用域解析符::

2.使用using声明

2.register关键字的改变

1、C++编译器有自己的优化方式,不使用register也可能做优化

 2、C++中可以取得register变量的地址


3.struct类型加强

C语言的struct定义了一组变量的集合,C编译器并不认为这是一种新的类型
C++中的struct是一个新类型的定义声明

4.C++中所有变量和函数都必须要有类型

5.bool类型关键字

      true代表真值,编译器内部用1来表示
      false代表非真值,编译器内部用0来表示
 
      bool类型只有true(非0)和false(0)两个值
      C++编译器会在赋值时将非0值转换为true,0值转换为false

6.三目运算符的增强

在C++中,表达式返回的是变量本身
C++中三目运算符返回的是变量本身,所以可以作为左值使用


const关键字的改变

C语言中 const修饰的变量是一个 常变量,本质还是变量,有自己的地址空间
C++中 const 变量声明的是一个真正的常量,不是变量,所以编译器不会为该常量分配空间

 const 修饰的常量会被放到 符号表 中


C++的引用

概念:
1)引用作为其它变量的别名而存在,因此在一些场合可以代替指针
2)引用相对于指针来说具有更好的可读性和实用性

引用的本质:

引用在C++中的内部实现是一个常指针
    Type& name   ===>  Type* const name
 
C++编译器在编译过程中使用常指针作为引用的内部实现,因此引用所占用的空间大小与指针相同。
 
从使用的角度,引用会让人误会其只是一个别名,没有自己的存储空间。这是C++为了实用性而做出的细节隐藏
 
常引用:

const & int e  相当于 const int * const e
普通引用 相当于 int *const e1
当使用常量(字面量)对const引用进行初始化时,C++编译器会为常量值分配空间,并将引用名作为这段空间的别名
使用字面量对const引用初始化后,将生成一个只读变量



C++对C的函数扩展


1.内联函数

C++中推荐使用内联函数替代宏代码片段
C++中使用inline关键字声明内联函数

内联函数声明时inline关键字必须和函数定义结合在一起,否则编译器会直接忽略内联请求。

tip:C++编译器不一定准许函数的内联请求

2.默认参数

C++中可以在函数声明时为参数提供一个默认值,
当函数调用时没有指定这个参数的值,编译器会自动用默认值代替


3.占位参数

 占位参数只有参数类型声明,而没有参数名声明
一般情况下,在函数体内部无法使用占位参数

4.函数重载

概念:

用同一个函数名定义不同的函数
当函数名和不同的参数搭配时函数的含义不同 

判断标准:

函数重载至少满足下面的一个条件:
      参数个数不同
      参数类型不同
      参数顺序不同
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息