C++基础00-入门知识补充
作者:互联网
基础知识 | C++基础
本页是对C++相关知识在 类与对象 前的汇总,便于回忆,将知识盲区记录如下
数据输入输出
流:数据从一个对象到另一个对象的流动,使用前要被建立,使用后被删除
提取操作:从流中获取数据的操作
插入操作:向流中添加数据的操作
常见的I/O流类库操纵符:
操纵符名 | 含义 |
---|---|
dec | 数值数据采用十进制表示 |
hex | 数值数据采用十六进制表示 |
oct | 数值数据采用八进制表示 |
ws | 提取空白符 |
endl | 插入换行符,并刷新流 |
ends | 插入空字符 |
setprecision(int) | 设置浮点数的小数值位数(包括小数点) |
setw(int) | 设置域宽 |
选择结构
switch语句:
case分支可包含多个语句,且不用{}
表达式、判断值都是int型或char型
如果若干分支执行内容相同可共用一组语句
case语句后的表达式不能是变量
自定义类型
类型别名:为已有类型另外命名
-
typedef
已有类型名 新类型名表
-
using
新类型名 = 已有类型名
枚举类型(不限定作用域)
除此还有限定作用域的enum类,将在 类与对象 部分介绍
-
定义方式
将全部可取值一一列举出来
-
语法形式
//enum 枚举类型名 {变量值列表}; enum Weekday {SUN,MON,TUE,WED,THU,FRI,SAT};
其中默认情况下,
SUN = 0, MON = 1, TUE = 2, ......, SAT = 6
函数的参数传递
说明:
- 在函数被调用时才分配形参的存储单元
- 实参可以是常量、变量或表达式
- 实参类型必须与形参相符
- 值传递是传递参数值,即单向传递
- 引用传递可以实现双向传递
- 常引用作参数可以保证实参数据的安全
含有可变参数的函数
C++标准中提供了两种主要的方法
- 如果所有的实参类型相同,可以传递一个名为initializer_list的标准库类型
- 如果实参的类型不同,我们可以编写可变参数的模板
关于可变参数的模板,我们将在 模板与群体数据 部分讲解
initializer_list:
一种标准库类型,用于表示某种特定类型的值的数组,该类型定义在同名的头文件中
initializer_list提供的操作:
方法 | 用途 |
---|---|
initializer_list |
默认初始化;T类型元素的空列表 |
initializer_list |
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形参的函数也可以同时拥有其他形参
使用场景:
- 在编写代码输出程序产生的错误信息时,最好统一用一个函数实现功能,使得对所有错误的处理能够整齐划一(然而错误信息的种类不同,调用错误信息输出函数时传递的参数也各不相同)
- 使用initalizer_list编写一个错误信息输出函数,使其可以作用于可变数量的形参
内联函数
声明时使用关键字 inline
编译时在调用处用函数体进行替换,节省了参数传递、控制转移等开销
注意:
- 内联函数体内不能有循环语句和switch语句
- 内联函数的定义必须出现在内联函数第一次被调用之前
- 对内联函数不能进行异常接口声明
constexpr函数
语法规定:
- constexpr修饰的函数在其所有参数都是constexpr时,一定返回constexpr
- 函数体中必须有且仅有一条return语句
//例
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