C++の表达式与语句
- 2019 年 12 月 27 日
- 笔记
题图:NoCopy
字数:952 | 半分钟读完我1.5小时的思考
C++表达式
今天我们简单介绍一下C++中的表达式,那么什么是表达式呢?我所理解的就是能表示操作数之间运算关系的表达式,那么表示操作数之间运算关系的是怎么实现的呢?是由运算符实现的,其实运算符才是表达式中的关键所在。下面我们重点说说运算符。
单目运算符与双目运算符
运算符有单目运算法与双目运算符之分。所谓单目运算符就是使用时只需要一个操作数,比如我们常见的取地址符(&),还有之前说到vector与array中的解引用运算符(*), 这个在C语言中,经常被用来取某个地址所存内容的值,因此又叫取值运算符。
#include <vector> int main(){ int num = 10; std::vector<int> vec1={1, 2, 3, 4}; for(auto 1 = vec1.begin(); 1 != vec1.end(); ++i) std::cout << *i << std::endl; }
重载运算符
C++中有一种比较特殊的运算符,重载运算符。我们知道C++的运算符可以用在基本内置类型,也可以用在类类型。那么这两者有什么不同呢?当用于类类型时,这些运算符可以被用户自定义,也就是说它可以有新的含义。因为形同义不同所以被称作重载运算符。
那么,我们在这之前有没有见过呢?当然!其实我们常见的IO库中 << 和 >>就是重载运算符,除此之外,我们之前介绍的string, vector, array, 迭代器等,它们使用的运算符都是重载运算符。这样初步看,重载运算符相对于普通的运算符更加灵活。实际上,重载运算符就像是我们自己创造的一样,我们可以定制化我们自己的运算符。
左值和右值
下面简单说一下左值与右值,我刚学习C++的时候,有一个感觉就是,左值?右值?傻傻分不清楚!所以下面我一定要把这两个概念讲清楚,因为后面我们学到C++中的高阶用法时,这两个概念会时不时蹦出来, 其实一查,也没那么难。
C++表达式只可能是左值和右值其中的一种。左值与右值是由一定的历史渊源的,它们继承自祖辈C语言,只不过C语言中的概念很简单:就是左值能放在赋值符号的左边,右值只能放在赋值符号的右边。
然鹅,C++中的就要复杂得多,在不同的符号前,它们的用法不用,比如:
赋值运算符、取地址符、内置解引用运算符、下标运算符等等,它们的用法都是不同的。
为了赶在12点前发出去看来今天的文章是写不完了,没事儿,明天继续接着说。先发出去吧,我开始写明天的文章了,毕竟咱说好的日更,不能停,天塌了,也必须日更!