编程语言
首页 > 编程语言> > C++基础00-入门知识补充

C++基础00-入门知识补充

作者:互联网

基础知识 | C++基础

本页是对C++相关知识在 类与对象 前的汇总,便于回忆,将知识盲区记录如下

数据输入输出

流:数据从一个对象到另一个对象的流动,使用前要被建立,使用后被删除

提取操作:从流中获取数据的操作

插入操作:向流中添加数据的操作

常见的I/O流类库操纵符:

操纵符名 含义
dec 数值数据采用十进制表示
hex 数值数据采用十六进制表示
oct 数值数据采用八进制表示
ws 提取空白符
endl 插入换行符,并刷新流
ends 插入空字符
setprecision(int) 设置浮点数的小数值位数(包括小数点)
setw(int) 设置域宽

选择结构

switch语句:

case分支可包含多个语句,且不用{}

表达式、判断值都是int型或char型

如果若干分支执行内容相同可共用一组语句

case语句后的表达式不能是变量

自定义类型

类型别名:为已有类型另外命名

枚举类型(不限定作用域)

除此还有限定作用域的enum类,将在 类与对象 部分介绍

函数的参数传递

说明:

  1. 在函数被调用时才分配形参的存储单元
  2. 实参可以是常量、变量或表达式
  3. 实参类型必须与形参相符
  4. 值传递是传递参数值,即单向传递
  5. 引用传递可以实现双向传递
  6. 常引用作参数可以保证实参数据的安全

含有可变参数的函数

C++标准中提供了两种主要的方法

关于可变参数的模板,我们将在 模板与群体数据 部分讲解

initializer_list:

一种标准库类型,用于表示某种特定类型的值的数组,该类型定义在同名的头文件中

initializer_list提供的操作:

方法 用途
initializer_listlst; 默认初始化;T类型元素的空列表
initializer_listlst{a,b,c...} lst的元素数量和初始值一样多;lst的元素是对应初始值的副本;
lst2(lst) 拷贝或赋值一个initializer_list对象但不拷贝列表中的元素;拷贝后原始列表和副本共享元素
lst2 = lst 同上
lst.size() 列表中的元素数量
lst.begin() 返回指向lst首元素的指针
lst.end() 返回指向lst尾元素下一位置的指针

使用方法:

initializer_list是一个类模板

使用模板时,我们需要在模板名字后面跟一对尖括号,括号内给出类型参数

//例
initializer_list<string> ls;//initializer_list的元素类型是string
initializer_list<int> li;//initializer_list的元素类型是int

比较特殊的一点:此类模板中的元素永远是常量值,我们无法改变此类(initializer_list)对象中元素的值

含有initializer_list形参的函数也可以同时拥有其他形参

使用场景:

内联函数

声明时使用关键字 inline

编译时在调用处用函数体进行替换,节省了参数传递、控制转移等开销

注意:

  1. 内联函数体内不能有循环语句和switch语句
  2. 内联函数的定义必须出现在内联函数第一次被调用之前
  3. 对内联函数不能进行异常接口声明

constexpr函数

语法规定:

//例
constexpr int get_size() {return 20;}
constexpr int foo = get_size();//正确:f

带默认参数值的函数

默认参数值:

可以预先设置默认的参数值,调用时如给出实参,则采用实参值,否则采用预先设置的默认参数值

//例
int add(int x = 5,int y = 6) {
    return x + y;
}
int main() {
    add(10,20);//10+20
    add(10);//10+6
    add(0);//5+6
}

默认参数值的说明次序:

有默认参数的形参必须列在形参列表的最右,即默认参数值的右面不能有无默认值的参数(调用时实参与形参的结合次序是从左向右)

//例
int add(int x,int y = 5,int z = 6);//正确
int add(int x = 1,int y = 5,int z);//错误
int add(int x = 1,int y,int z = 6);//错误

默认参数值与函数的调用位置:

如果一个函数有原型声明,且原型声明在定义之前,则默认参数值应在函数原型声明中给出;如果只有函数的定义,或函数定义在前,则默认参数值可以在函数定义中给出

//例1
int add(int x = 5,int y = 6);
//原型声明在前
int main() {
    add();
}
int add(int x,int y) {
    //此处不能再指定默认值
    return x + y;
}
//例2
int add(int x = 5,int y =6){
//只有定义,没有原型声明
    return x + y;
}
int main() {
    a
}

标签:00,入门,int,list,C++,initializer,add,参数值,函数
来源: https://www.cnblogs.com/microwang/p/16279962.html