针对于CPP更新总结
1.->运算符
箭头运算符作用于一个指针类型的运算对象,结果是一个左值
2. .运算符
点运算符获取类对象的一个成员
左右值:点运算符运算结果 为左值还是右值,取决于成员所属对象是左值还是右值
基于1. 2.的PS:点运算符和箭头运算符都可用于访问成员。 it->mem <=> (it).mem
3.左右值(“左值存放身份(内存的位置) 右值存放内容”)
左值表达式的求值结果是一个对象或者一个函数,常量对象为代表的某些左值实际上不能作为赋值语句的左侧运算对象。 此外,虽然某些表达式的求值结果是对象,但他们是右值而非左值。
4.new
在自由空间分配的内存是无名的,因此 new 无法为其分配的对象命名,而是返回一个指向该对象的指针:
int * pi =new int // pi指向一个动态分配的,未初始化的无名对象
此new表达式在自由空间构造一个int型对象,并返回指向该对象的指针。
5.指针
对指针的新理解
int ival=42;int * p =&ival 官方说法:p存放变量ival的地址
自己理解:int是分配一栋楼,p是分配在这栋楼里的房子,数据存放在房子里,要想获取需要“ * ” 作为钥匙。
PS:1.“&” “*”既能用作表达式里的运算符,也能作为声明的一部分出现,取决于符号所在上下文
2.对指针解引用会得出所指对象,如果给解引用结果赋值,实际就是给指针所指对象赋值