C++笔记要点

C++风格

1. 常量命名全部大写
2. 

函数传参四种方式

1. 值传参
"函数接收到了传递过来的参数后,将其拷贝一份,其函数内部执行的代码操作的都是传递参数的拷贝。修改参数不会影响到传递过来的参数的值。"
double f1( double a, double b);
double z = f1( x, y );
2. 引用传参
“不拷贝,函数形参相当于是实参的别名,所以叫引用”
void swap ( double & a, double & b);
swap( x, y);
3. 常量引用传参
“不拷贝,不能修改”
void f3(const int & a);
4. 右值引用(右值:临时的变量、资源)
“不拷贝,直接接管临时变量的内存资源”
void f3(string && a);
(补充:std::move()的作用体现在哪呢?它的作用是把一个左值变成一个右值引用)

函数返回三种方式

1. 按值返回
“进行拷贝”
int  f1(int a);
2. 按常量引用返回
“不拷贝,返回值不能修改,需要使用常量引用进行接收”
const int & f2(int b);
3. 按引用返回
“不拷贝,能够修改”
int & f3(int c)

成员函数声明为const

1. 被const声明的成员函数只能访问const修饰的成员变量
2. const成员函数只能访问,不能修改const修饰的成员变量
3. 非const成员函数可以访问任意的成员变量
4. 加上mutable修饰符的成员变量可以被任意成员修改

size_type与size_t含义

1. size_type用来描述字符串的长度大小(string)
2. size_type所定义的数据范围针对不同的机器平台是不同的,相当于是做了一层数据隔离
3. str.size() 返回 size_type

4. size_t 用于描述"二进制位"大小
5. sizeof() 返回size_t
bitset<32> bitvec;
size_t sz=bitvec.size();

6. size_t是全局定义的类型;size_type是STL类中定义的类型属性
7. size_t 使用的时候头文件需要 <cstddef> ;size_type 使用的时候需要<string>或者<vector>
8. 在用下标访问元素时,vector使用vector::size_type作为下标类型(size_type是容器概念,没有容器不能使用),而数组下标的正确类型则是size_t

tips

输出大量转移序列
cout << R"(c:\files\)";

使用exit(i)退出
#include <cstdlib>
exit(i)
UNIX 和 Windows系统,1表示错误,0表示正确 

运算顺序

1. 优先级相同的一元运算符从右往左
2. 优先级相同的二元运算符从左往右
3. 运算符优先级

在这里插入图片描述

流操作

  1. 单纯文件流 ifstream/ofstream
#include <fstream>
#Include <cstdlib>
using namespace std;
ifstream inStream;
inStream.open("filename.txt");
if(inStream.fail())  
{ exit(0) ;}
inStream.close();
  1. 文件流设置格式
outStream.setf(ios::fixed);
outStream.setf(ios::showpoints);
outStream.precision(2);
ios::fixed
ios::scientific
ios::showpoint
ios::right
ios::left
cout<<setw(4)
  1. 流作为函数实参必须是传引用的
  2. 包含默认实参与不包含实参,默认实参放在最后
  3. eof成员函数
inStream.eof()
  1. 预定义字符函数
#include <cctype>
char c = toupper('a');
cout << c;

toupper
tolower
isuppper
islower
isalpha
isdigit
isspace

数组

  1. 遍历
int arr[4]={2, 4, 6, 8};
for(int x: arr)
    cout<<x<<"";
endl;

C字符串

  1. 使用操作符输入>>
char a[80];
cin>>a;
每次读取一个单词,遇到空格与换行符即停止
  1. getline
char a[80];
cin.getline(a, 80);
  1. C字符串转化
#include <cstdlib>
int x = atoi("888");
long y = atol("888");
double z = atof("888");
  1. 几个库函数
    在这里插入图片描述

C++字符串

  1. 双引号字符串实际实际上是一个C字符串,之后构造string数据类型
#include <string>
string cc("ants");
  1. 均调用构造函数
string cc("ants");
string cc = "ants";
  1. 操作符包含 =、+
  2. 字符串输入
使用cin、>>读取单个单词,会忽略开始的空白字符,遇到空白字符即停止
使用getline读取一行输入
string line;
getline(cin, line);      //停止条件,遇到换行符
getline(cin, line, '?'); //停止条件,遇到 '?'
  1. cin、>> 与 getline 混用问题
int n;
string line;
cin>>n;
getline(cin, line);

输入
42
Hello World
结果
line为空字符串
原因
(cin>>n)将行内剩下的东西留给后续的getline来读取。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值