ustc-sue 发表于 2017-7-24 20:51:56

c++ const 用法总结。

c++ const 有很多用法,总结如下:
1,const 修饰一个变量:
const int i=0;//表明对象i被创建为一个静态的,其值不能改变,故一定要初始化。
2,const 修饰一个引用对象:
const int &i;//定义一个整型的引用变量i,其值不能改变,
3,const 修饰类的成员函数,成员变量。
class A
{
public:
       int i=0;
   constint 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修饰指针本身,两者都被限制。

以此给自己做个总结











admin 发表于 2017-7-27 06:59:04

关于const顺便扩展一下
const用的好
程序会强健很多

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

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

页: [1]
查看完整版本: c++ const 用法总结。