2021-05-09

关于const

1、const数据成员

类中的const成员要在初始化列表中进行初始化,不能在函数体里初始化:

      例:class Clock{

            private:

                   const int hour;

                   int minute,second;

            public:

                    Clock(int h,int m,int s):hour(h){minute = m;second = s;}

             };

2、const函数成员

               void Clock()const { ……}

注:常成员函数可以引用const数据成员,也可以引用非const数据成员,只要在常成员函数中不改变数据成员即可。

       const数据成员可以被const成员函数引用,也可以被非const的成员函数引用,只要const数据成员不被修改即可。

       常成员函数不能调用另一个非常成员函数。

3、常指针

         const在中间,地址不可变,内容可以变。

        (1)地址值是常量的指针:所指向的量是可以变得,但地址值不可以变。

                            Eg:char  s1[]=”asd”;

                           Char  s2[]=”qew”;

                           char * const ptr=s1;

                           Ptr=s2;就非法了

        (2)所指向的值是常量:地址值是可以变得,指向的量是不可以变的

                          const char * ptr=s1;

                          ptr=s2;任然合法。但ptr=”float不合法

4、const对象

          类名 const 对象名(实参列表)或

          const 类名 对象名(实参列表)

注:常对象不能调用该对象的非const型的成员函数

5、对象与指针

(1)指向对象的指针

    (a)const Circle*p = &c1; 

             const修饰Circle,对象数据(c1)不可修改,p可以修改,即p可以指向其他对象的地址。

    (b)Circle* const p = &c1;

             const修饰p,p不可以更改,对象数据允许更改。

(2)函数参数为对象指针

    (a)形参是指向const对象的指针【调用函数时对象的值不被修改】

             执行过程中不能改变指针变量所指向的对象的值;

             实参可以是指向const对象的指针,也可以是非const对象的指针;

             不允许通过形参指针访问实参对象的非const函数。

    (b)形参是指向非const对象的指针

             实参只能用指向非const对象的指针。

(3)函数参数为对象引用【不改变对象,只允许读取】

               void f(const Circle&r){……}

        不能通过引用对象访问非const成员;

        若实参对象为const对象,形参引用必须为const。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值