const 和 引用 指针

原创 2013年12月05日 13:43:55

const对象:

  必须进行初始化,默认是定义该对象文件的局部变量。其他文件要想使用必须在定义的时候加上extern。

 1 //file1.cpp
 2 extern const int a = 1;
 3 
 4 //main.cpp
 5 #include <iostream>
 6 
 7 using namespace std;
 8 
 9 extern const int a ;
10 
11 int main()
12 {
13     cout << a << endl;
14     return 0;
15 }

 

  如果是字面常量初始化,可以定义在头文件中,也不会造成多重定义,因为默认是局部变量。但是如果其他初始化就不能定义在头文件中。

 1 //"file1.h"
 2 #ifndef _FILE_H_
 3 #define _FILE_H_
 4 
 5 extern const int a = 1;//可以在头文件中定义字面常量初始化的const对象
 6 
 7 #endif
 8 
 9 //main.cpp
10 #include <iostream>
11 
12 using namespace std;
13 
14 extern const int a ;
15 
16 int main()
17 {
18     cout<< a <<endl;
19     return 0;
20 }

 

引用:    是复合类型。引用是变量的别名,不能引用引用类型的引用,但可以引用其他类型的引用。

1 //不能引用引用类型的引用
2 int a = 1 ;
3 
4 int &ra = a;//ok
5 
6 int && rra = ra;//error

 

   可以声明const引用,extern const int &ra;

   const 引用可以绑定到不同类型的对象或直接绑定到右值。而非const引用必须绑定到为同类型的对象。

 

 1 double a = 1.0;
 2 
 3 int &ra = a;
 4 /************************
 5 * 不同类型的引用出现了中间值 
 6 * double a = 1.0;
 7 * int tmp = (int)a;//tmp = 1;
 8 * int &ra = tmp;
10 * 如果改变引用ra的值只能够改变tmp的值,而不能改变a的值。
11 *
12 ************************/
13 
14 const double a = 1.0;
15 
16 const int &ra = a;
17 /*************************
18 * 同样出现了中间值tmp
19 * const double a = 1.0;
20 * const int tmp = (cosnt int)a;
21 * const int &ra = tmp;
22 * 但是const引用是 只读的,所以就不能改更ra的值
23 * 也就不会引起tmp和a的值的变化
24 *************************/ 

 

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int main ()
 6 {
 7     const int &ra = 1;
 8     cout << ra <<endl;
 9     return 0;
10 }

 

指针和引用差别:

1.指针更改所指向的对象,而引用从一而终。

int a = 1, b =3;
int *pa = &a;
int &ra = a;
pa = &b;//ok
int &ra = b;//error


2.指针可以为空,引用不能为空。

int * p;//ok
int &ra;//error


3.有所有元素为指针的数组,但是没有所有元素为引用的数组。

int * a[10];//ok
int & ra[10];//error


4.指针的实质就是存储地址的变量,而引用则是一个变量的别名。

 

指针:

const对象必须用const指针指向,但是const指针未必指向const对象。

typedef string * pstring;

const pstring pst;

pst为const的string类型的指针,

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C++ 中引用、指针、const

引用、指针属于复合类型数据,即由基本数据类型加引用修饰符(&)或指针修饰符(*)而构成。 1.引用:变量或者对象所起的别名 1.1-> 引用变量名不存在实体,即在内存中存没有为此变量开辟内存空间...

c++之指针,引用,const

一,引用的概念 引用不是定义一个新的变量,而是给一个已经定义的变量重新起⼀个别名。 格式: 类型&新的变量名=已经定义过的变量名 引用的特点: 1.一个变量可取多个别名; 2.引用必须初...

【C++】C++基础:指针__引用__const

引用 什么是引用?引用:就是给已定义的某一变量(目标)起一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名 虽然引用的使用和变量的使用大同小异,但是,还是...

指针与引用的初始化&顶层底层const变量初始化问题

- 指针与引用的初始化 - 顶层和底层const赋值 - PS- 指针与引用的初始化int i = 1; const j = 2; //错误,&不可以作用在literal value上 int ...

面试宝典5,6,7--程序设计基本概念;预处理、const与sizeof;指针与引用

http://blog.csdn.net/winglet/article/details/2831605 1.What will be the output of the following C...

引用_const_指针

一、引用 1.什么是引用        引用不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名。 2.定义的格式   类型&引用变量名=已定义过的变量名。 3.引用的特点   ...
  • rzzrwjh
  • rzzrwjh
  • 2017年07月03日 14:28
  • 51

指针-引用-const

c/c++的指针和引用

const(二):(转) 常指针和常引用

http://www.cppblog.com/HUUYUU/archive/2010/05/29/10732.html 常指针和常引用 (1)常指针   使用const指针时,由于con...

const static 指针与引用

引用时C++中引入的,它的本质是指针,是一种特殊的指针。     1)必须初始化,且不存在NULL的引用。     2)作为参数传递的时候,不需形参。 指针的指针效果就和指针的引用一样,可以修...

C++11 note-1引用指针和const

这主要是C++ Primer中的引用、指针和const限定符的一些基本原理和注意的细节,可以说应该是自己的一些学习笔记和心得吧,希望可以记录自己的成长的同时,资源共享,让C++社区的人越来越多。在后续...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:const 和 引用 指针
举报原因:
原因补充:

(最多只允许输入30个字)