const 应用概述 [C++Primer]

1.const 定义一个常量,常量在定义之后就不可以在修改,任何修改的尝试都会引起编译错误,所以在定义的时候必须初始化。

const int nTemp = 9;

2.在全局作用域声明的const变量是定义该对象的文件的局部变量,只存在于那个文件中,不能被其他文件访问;

通过指定const变量为extern,就可以在整个程序中访问const对象。

file_1.cc

extern const int bufsize = 10;

file_2.cc

extern const int bufsize;

for(int index = 0; index <= bufsize; index++);

3.非const变量默认为extern。

4.const引用,指向const对象的引用;

为了阻止const对象被修改,将普通的引用绑定到const对象是不合法的;

const int i = 42;int &r = i;不合法的。

5.const引用可以初始化为不同类型的对象或者右值,如:int i = 42; const int &r = 42;const int &r2 = 42 + i;

6.const用在成员函数的形参表之后,可以将成员函数声明为常量,const必须出现在声明和定义中,否则会出现编译错误;

double avg_price()const;

7.const重载

成员函数是否为const,也可以形成重载。

对于函数值传递的情况,因为参数传递是通过复制实参创建一个临时变量传递进函数的,函数内只能改变临时变量,但无法改变实参。则这个时候无论加不加const对实参不会产生任何影响。但是在引用或指针传递函数调用中,因为传进去的是一个引用或指针,这样函数内部可以改变引用或指针所指向的变量,这时const 才是实实在在地保护了实参所指向的变量。因为在编译阶段编译器对调用函数的选择是根据实参进行的,所以,只有引用传递和指针传递可以用是否加const来重载。

8.const成员函数可以改变mutable成员

1 class  Screen{
 2 public :
 3    do_display(std::ostream& os) const;
 4 private:
 5     mutable size_t    access_ctr;
 6 //
 7 };
 8 Screen ::do_display(std::ostream& os) const
 9 {
10    size_t++;
11     access_ctr++;
12 }

原文链接: https://www.cnblogs.com/cy568searchx/archive/2013/04/02/2995121.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/83020

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午8:51
下一篇 2023年2月9日 下午8:52

相关推荐