const的几种用法
2017-10-31 12:37
169 查看
const的几种用法
一、在变量中的应用
const int i = 0;int const i= 0;
这两种用法相同,声明的同时需要初始化。
extern const int i = 0;
extern const int i ;
C++ 将const 变量的作用域设置为一个文件内。如 tall.cpp中的const int i;不能被 high.cpp 直接调用。但有时想要让 tall.cpp 中的const int i 被其他文件调用。那么就需要加上extern关键字,如第一条语句所示。而 high.cpp 想要调用 tall.cpp中的 const int i,则需要在文件中做出声明,如第二条语句所示。
二、在引用、指针中的应用
int i = 0;const int j = 0;
const int & k = i; //常量引用,引用非常量。
const int & k = j; //常量引用,引用常量。
int & k = j; //这条语句是错误的,因为 j 为常量,而 k 为非常量引用,可能会修改 j 的值。
const int & 这种形式叫做对“常量引用”,它是“对const的引用”的简称。它引用的对象可以是常量,也可以是非常量。注意:常量引用可以引用非常量、常量。而非常量引用只能引用非常量。
int i = 0;
int * k = & i ;
const int * j = & i ; //可以理解为 const 修饰 * j ,即 * j是一个常量。而 j 可以指向不同的变量,也就是 j 可以修改 可以赋值。
j = k; //正确的。
* j = 1; //错误的。
int * const r = & i; //可以理解为const修饰 r ,即 r 永远指向 i 。而* r 所代表的值是可以改变的。
*r = 5; //正确的。
r = k; //错误的。
那么,你能否根据上述内容理解这条语句呢:const int * const j = & i;
三、const成员函数
看以下代码:const Stock land = Stock( " canshu " );
land.show();
这段代码定义了Stock类的一个对象land。由于land是一个常量对象,所以show()是不能够修改land值的。那么如何正确声明show()呢?
下面是常见的一种声明普通函数的方法:
int sum ( const int a, const int b )
{
return a+b;
}
函数参数表中,含有两个const 形参:const int a, const int b。这两个const的存在使得sum函数只能使用a,b的值而不能修改。
类似的,我们可以定义show()函数。但是从show()的调用方式 land.show() 可以看到,show()是没有形参的。怎么办呢?其实show()的形参就是land ,那么我们要如何使用const呢?看下面代码:
void Stock::show() const{ cout<<"啊?”<<endl; }
此处的const就是表示show()只是调用land的数据而不进行修改。
四、顶层const与底层const
const int * const i = & j ;这段代码有两个const。第一个修饰 * i ,被称为底层const。 第二个修饰 i,被称为顶层const。
相关文章推荐
- CONST的几种用法总结
- const几种用法
- const关键字的几种常用用法
- const 的几种用法
- const 修饰符的几种用法
- C语言const几种常见用法
- const用法
- C++ 进阶 - const 的用法及尽量使用const的好处
- const用法总结
- const、volatile、mutable的用法
- const 用法总结(C++)
- const用法的解惑
- Java for循环的几种用法
- 最受欢迎的几种图片格式及其常见用法
- C++中const关键字用法详解及实例和源码下载(三)
- const用法总结
- const 作用和用法
- const用法
- const的用法
- 几种免费的界面库及其用法(转)