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
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!