C++初识

命名空间
  • 解决命名冲突

  • 命名空间定义
    1.namespace + 命名空间名称 + {}
    2.嵌套定义: namespace + 名称 + {
    namespace + 名称 + {}
    }
    3.同一个命名空间可以定义多个片段

  • 命名空间内成员的使用方式
    1.完整的作用域 + 成员 : std::cin
    2.引进成员 : using namespace std::cin
    3.展开命名空间 : using namespace std(不建议使用, 所有成员都暴露在全局域中,可能会导致成员重定义)

  • 命名空间可以定义别名,也支持嵌套命名空间的别名定义 : namespace 别名 = 完整的命名空间(支持嵌套)

函数重载
  • 前提 : 同一个作用域下才可以形成函数重载
  • 条件 : 1. 函数名不同
    2.参数信息不同:顺序, 类型, 个数
缺省参数
  • 半缺省
  • 全缺省
编译
  • 预处理 : 头文件展开, 去注释, 宏替换, 条件编译
  • 编译 : 语法检查, 把源代码翻译成汇编代码
  • 汇编 : 把汇编代码翻译成机器码 --> 目标文件(.o, .obj) --> 导出符号表 未解决符号表
  • 链接 : 把所有机器码转换成一个可执行的程序 --> 找到所有指令的地址
引用
  1. 给其他变量起别名{
    int a = 10;
    int& b = a;
    }
  2. 实质上是const指针,将int&b = a 转化为 int* const b = &a;
  3. 指向在定义时就确定, 不会变, 从一而终
  4. 使用比较安全,没有空应用, 没有解引用异常
内联函数
  • inline + 普通函数定义
  • 对于简单的函数, 会在调用的地方, 把指令原地展开, 最终执行时, 没有栈帧开销
  • 对于复杂函数, 即使声明成内联函数, 编译器也不会展开.(包含循环递归)
  • 可以用内联函数代替宏函数
  • 内联函数不支持分离定义, 声明和定义放在同一个文件域中, 一般是在头文件中直接定义内联函数(如果定义和声明不在同一个地方写, 主程序中的未解决符号表中会找不到函数实现)
一些C11语法
  • auto:编译时自动类型推导, 本身不代表任何具体类型
    1.auto 变量名 = 初始化表达式 ( auto b = struct Node)
    2.auto 变量1 = 表达式1, 变量2 = 表达式2, … (表达式的类型必须一致)
    3.函数参数, 数组不能用auto声明

  • 范围for
    1.遍历确定的范围的集合
    2.for(类型 当前遍历的变量值 : 需遍历的遍历集合)

  • nullptr
    1.类型 : nullptr_t
    2 .可以进行任意指针类型的隐式类型转换

类的定义
  • 定义 : struct / class 类名 + {};
  • 类的访问权限 : public , private , protected
    1.public : 成员在任何地方可见
    2.private : 成员在类外不可见
    3.protected : 成员在类外不可见
    4.访问权限的作用区间 : 从当前访问权限限定符开始直到下一个限定符开始的位置
  • struct 和 class 定义的类唯一的区别是 : struct定义的成员默认是public, class定义的成员默认是private, 其他没有任何区别
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值