[技术| 编程·课件·Linux] c++ const 用法总结。

ustc-sue · 发布于 2017-07-24 20:51 · 1019 次阅读
6036
c++ const 有很多用法,总结如下:
1,const 修饰一个变量:
  const int i=0;//表明对象i被创建为一个静态的,其值不能改变,故一定要初始化。
2,const 修饰一个引用对象:
  const int &i;//定义一个整型的引用变量i,其值不能改变,
3,const 修饰类的成员函数,成员变量。
  class A
{
public:
       int i=0;
     const  int x1=9;//对象x1被修饰为常对象,由于x1不能被赋值,只能通过初始化得到值。
       int fun(int n) const;//这里的fun函数被修饰为常函数。
       void fun1(int m);
}

A::fun1(int m){}

A::fun(int n)const//常成员函数
{
   i=n+5;//这句话错误,因为fun()成员函数是常函数,不能修改任何成员变量的值(const与非const成员变量)。
   fun1(100);//这句话是错误的,因为const成语函数不能调用非const成员函数,非const成员函数会修改成员变量。
   int value=i+3;//这句话是正确的。const成员函数可以调用成员变量。
}
4,const 修饰函数的形参
  void fun(const int i){}//const修饰形参i,i不能再函数体当中被修改。
5,const 修饰指针:一:const修饰指针本身。二:const修饰指针指向的对象。
   如何判别:以“*”为界,const在左,指针指向的对象的值不变,const在右,指针本身不变。“左对象,右指针”。
   举例:const int *p;//这里的const修饰指针所指对象,即i所指对象应为一个const int,既然对象是const,不允许修改,
                       //故通过指针p就不能修改。但是p是非const,故它可以指向另外一个地址。
        int y=23; int * const pointer=&y;//const 修饰的是指针本身,即指针不能修改指向。但是对象没有限制为const,仍然可以
                                        //修改对象的值,*pointer=100;
有些地方有些恶心的如:const int * const pointer;//前一个const修饰指针所指对象,后一个const修饰指针本身,两者都被限制。

以此给自己做个总结











共收到 1 条回复
admin · #2 · 2017-7-27 06:59:04  回复 支持 反对
关于const顺便扩展一下
const用的好
程序会强健很多

C++中static_cast、const_cast、reinterpret_cast的用法举例,附带举例说明强制类...
http://www.ruanyuan.net/forum.ph ... =7978&fromuid=1
(出处: 软院网 RuanYuan.Net)

C++ 如何初始化静态类成员
http://www.ruanyuan.net/forum.ph ... =8201&fromuid=1
(出处: 软院网 RuanYuan.Net)

回帖
B Color Image Link Quote Code Smilies
Command + Enter
楼主相关话题
快速回复 返回顶部 返回列表