C++关于指针、const、引用三者的体会

来源:互联网 发布:淘宝下拉菜单小图标 编辑:程序博客网 时间:2024/05/20 09:05

    关于三者的应用可以用一下几句话来总结:

一、对变量的更改权限只会变低

二、符号离谁近就修饰谁

三、const不是对象

    首先看第一句,对变量的更改权限只会更低;

    举例说明:

int x = 0;//对该变量可读可写;正确

const int &y=x;对该变量可读不可写;正确

int const a = 0;//对该变量可读不可写;正确

const int &b=a;//对该变量可读不可写;正确

int &c=a;//对该变量可读可写;错误;原因是 定义的c引用表示可以更改他所‘指’的变量的值,这意味他有可读可写的权限,但是a是常量,可读不可写。然而这句代码提高了a的权限为可读可写。

同样指针也是一样。

    第二句,符号离谁近就修饰谁:

    仍然举例:

const int x=0;此处可写成 int const x=0; 忽略int ,const 修饰 x,也就是说x为常量,里面放int类型

const int &y=x;此处可写 int const &y=x;忽略int ,const 修饰&y,也就是说引用y‘指’向的‘对象’为常量

int &const f=x;错误,引用不是对象不能把引用本身用const修饰,但是,引用本身定义之后就不能修改;

int const *p=&x;或者const int *p=&x;const 修饰*p,*修饰p,也就是说p是指针。const修饰*p,就是p指向的‘对象’为常量

int *const g=&x;*修饰const g,cosnt修饰g,也就是说g为常量,*修饰const g,就是说该常量为指针,他会一直指向一个对象,不能指向别的对象

const int *const gg=&x;表示他会一直指向常量x,不能指向其他对象,同时不能通过gg修改x;

关于引用和指针:

引用时别名,而指针放的是地址。关于引用、指针用作形参,则不在这里说了。

第三句,const不是对象