月度归档:2018年02月

[Cpp基础] [07] 复杂类型和类型推断

Last Updated on 2020年4月14日

数组类型和函数类型

尽管在大部分场合中,数组类型和函数类型都被转换成某种指针使用,然而它们确实是某种类型.
这一点在类型推导中很重要,因为类型推导可以推导出数组类型/函数类型

  • T[N]型对象为数组类型,其中N必须为constexpr,称T array[N]中的arrayT[N]型的一个实例.
    • N
Read More

[Cpp基础] [06] 强制类型转换

Last Updated on 2020年4月14日

强制类型转换

  • C++风格的类型转换为四个xxx_cast<TYPE>(var),每个都有特定的应用场合.
  • 转换总是通过创建临时量实现的,相当于TYPE tmp(var). 转换语句整体为tmp
  • 规定:仅有xxx_cast<TYPE &>(var)得到的临时量可以作为左值,其他情况都是右值。
Read More

[Cpp基础] [05] const与constexpr

Last Updated on 2020年4月14日

const限定符

  • const是一种编译期特性,用于限定对象的编译期写入权限
    • 换言之,其实可以通过各种trick在运行期写入对象.
    • 当项目很大,或者开发人员很多时,使用const就能利用编译器约束开发人员的行为,给开发人员做一定提醒.
    • const值往往还可以供编译器进行优化.
  • 原则上,当我们创建一个变量时,若认为它不应当被修改,就应当声明称
Read More

[Cpp基础] [04] 名字查找与函数重载

Last Updated on 2020年7月22日

名字

  • 在C++中,有各种各样的名字,变量名和函数名(可调用对象名)是最重要的两个
  • 命名空间:形如namespace XX{}的作用域.
    • 我们的代码默认都位于全局空间内,该空间直接通过::访问
    • 可以定义匿名的namespace,其效果和inline命名空间类似,匿名的namespace是文件私有的,在文件内部共享,在文件之间独立.在C++中,该特性设计用于替代C风格的全局static型变量.
  • 作用域:用{}分割的各种区域都是作用域,常见的如class,namespace,函数体,代码块等.作用域是可以嵌套的.
  • 嵌套的命名空间需要注意名字隐藏的问题,例如,对于namespace A{#include
Read More