类型转化

c语言强制类型转换主要用于基础的数据类型间的转换,语法为:

  1. (type-id)expression//转换格式1
  2. type-id(expression)//转换格式2

c++除了能使用c语言的强制类型转换外,还新增了四种强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast,主要运用于继承关系类间的强制转化,语法为:

  1. static_cast<new_type> (expression)
  2. dynamic_cast<new_type> (expression)
  3. const_cast<new_type> (expression)
  4. reinterpret_cast<new_type> (expression)

其中new_type为目标数据类型,expression为原始数据类型变量或者表达式。

static_cast

static_cast一般用来将枚举类型转换成整型,或者整型转换成浮点型。也可以用来将指向父类的指针转换成指向子类的指针。
做这些转换前,你必须确定要转换的数据确实是目标类型的数据,因为static_cast不做运行时的类型检查以保证转换的安全性。
基本上就可以认为是C里面的强制类型转换。

命名空间(namespace)

命名空间主要用来区分来自不同文件的同名函数。其声明方式是

  1. namespace namespace_name { // 代码声明}

调用的时候使用作用域运算符::就可以
命名空间可以嵌套使用。

无名命名空间

在命名空间中,有的代码我们不希望被命名空间之外调用,这个时候就可以使用无名命名空间。由于没有名字,无法被外部调用,其中的代码的作用域自己文件中的相应作用域
需要指出的是,在无名命名空间中定义的变量是static的。

  1. namespace {// 代码声明}