const

来源:互联网 发布:淘宝怎样修改当前主营 编辑:程序博客网 时间:2024/06/05 02:53

1.       const指定一个不该被改动的对象,它允许你告诉编译器和其它程序员某值应该保持不变

2.       const char* p = greeting;               //non-cosnt pointer, const data

char* const p = greeting;               //const pointer, non-const data

const char* const p = greeting;     //const pointer, const data

如果const出现在 * 左边, 表示被指物是常量;如果出现在 * 右边,表示指针自身是常量。

void f1(const Widget* pw);

void f2(Widget const* pw);

两种写法意义相同

3.       STL迭代器的作用就像个T*指针

std::vector<int> vec;

……

const std::vector<int>::iterator iter = vec.begin();           //iter的作用像T* const

std::vector<int>::const_iterator cIter = vec.begin();         //cIter的作用像const T*

因此,如果希望迭代器所指的东西不可被改变,应用const_iterator

4.       令函数返回一个const

const Rational operator*(const Rational& lhs, cosnt Rational& rhs);

……

Rational a,b,c;

if(a*b = c)…                        //本来想做比较==,若为const,则会报错

如果a,b是内置类型,则不合法;但良好的自定义类型则允许对两值乘积做赋值动作。

const参数 除非有需要改动参数或local对象,否则将它们声明为const,则可以发现“==”意外键成“=”的错误。

5.       const成员函数

1>. 它们使class接口比较容易理解,因为得知哪个函数可以改动对象内容而哪个函数不行很重要

2>. 它使操作const对象成为可能

如果两个成员函数只有常量性不同,可以被重载

真实程序中const对象大多用于passed by pointer-to-constpassed by reference-to-const的传递结果

原创粉丝点击