c++的左值与右值 ,const限定符--随笔

来源:互联网 发布:哪些是人工智能股票 编辑:程序博客网 时间:2024/05/28 23:19

《c++primer》

复合类型(compound type)

是基于其他类型定义的类型。

引用(reference)

c++中新增了一种引用:所谓的右值引用(rvalue reference)。这种引用主要用于内置类。严格来说,当我们使用术语“引用”时,指的其实是左值引用(lvalue reference)。

-引用即别名

-引用的定义

注意:以引用作为初始值实际上是以引用绑定的对象作为初始值

指针与引用的区别

引用是给对象起了另外一个名字

//指针(pointer)是“指向”另外一种类型的复合。与引用类似,指针也实现了对其他对象的间接访问。但是指针与引用又有很多不同点。
1,指针本身就是一个对象,允许指针拷贝和赋值,而且在指针的生命周期内它可以先后指向几个不同的对象。
2.指针无需在定义内赋初值,和其他内置对象一样,在块作用域内定义的指针如果没有被初始化,也将拥有一个不确定的值。
注意:使用指针的时候一定要记得初始化

有时候想要搞清楚一条赋值语句到底是改变了指针的值还是改变了指针所指对象的值不太容易,最好是记住赋值永远改变的是等号左侧的对象.

–任何非零的指针对应的条件值都是true

–void* 指针可以存放任何着一个地址,这一点和其他指针类似,
但是我们对这个对象到底是什么类型并不了解,也就无法确定在这个对象上做哪些操作。

(拿它和别的指针比较,作为函数的输入输出,或者给另外一个void*赋值,不能直接操作void*所指向的对象,因为我们并不知道这个对象到底是个什么类型,也就无法确定能在这个对象上做哪些操作)。

指向指针的引用

int &*p = &ri;//error定义了一个指向引用的指针

要记得从右往左读去理解

const限定符号

–extern const int bufSize=fcn();

可以在不同的文件中使用同一个const

1.const的引用

1.常量引用不能用作修改它所绑定的对象
2.允许一个常量引用绑定非常量的对象,字面值
3.不能将非常量引用绑定到常量对象
引用的对象是常量还是非常量都不能影响到引用和对象本身的绑定关系本身

2.指针和const

1.要想存放常量对象的指针,只能使用指向常量的指针。

2.允许一个常量指针,指向一个非常量对象.(常量指针)
常量指针*const必须被初始化,但是const int *p无需初始化.

3.顶层const问题

指针本身是一个对象,但是指针又可以指向另外一个对象

指针本身是一个常量以及指针指向的对象是不是一个常量就是两个问题
顶层const表示指针本身是一个const对象,底层const表示指向对象是一个const 型。

原创粉丝点击