c++ 学习笔记
C++学习笔记
1、使用C++11的标准来编译C++要添加-std=c++11参数(gcc版本要大于4.8)
g++ -std=c++11 test.cpp -o test
2、输入EOF
windows : CTRL+Z
linux/unix : CTRL+d
3、引用初始化
普通引用只能用一个左值(对象)进行初始化,因为只能引用一个对象。
int &a = b; # a是b的引用,通过a可以修改b的值
vector<int>::iterator &it = ivec.begin(); # 错误,ivec.begin()返回的是一个值,是一个临时对象,在return语句执行完后,就会被销毁,这样就返回了一个悬空的引用。
# 添加中间变量
vector<int>::iterator a = ivec.begin(); # 赋值给中间变量,中间变量是一个左值
vector<int>::iterator &it = a; # 左值初始引用。
# 返回引用的函数,可以初始化引用
int &getRef(); # 返回的是一个引用,所以getRef()是一个左值。
int &c = getRef(); # 左值可以初始化化引用
const 引用可以用一个右值进行初始化
const int &a = 5; # a不能改变
const vector<int>::iterator &it = ivec.begin(); # it不能改变,++it都是非法的,没有意义
改变临时变量的生命周期
vector<int>::iterator &&it = ivec.begin(); # 添加两个“&”符号,产生一个返工值的副本?
4、man命令来查看类的成员
man std::string // 可以查看string的成员变量和成员函数的声明。
5、使用标准库的类型和对象
使用标准库类型和对象要分两步
1、include标准库的头文件
2、using namespace std; 或者每个类型前都加上std::,表示这个类型是标准库中的。
只include头文件,编译器是找不到类型或对象的,为什么还不知道。
std::string //使用标准库中的类
std::cout //使用标准库中的对象