• C++中const关键字的使用总结


    C++中使用const关键字来修饰常量,下面从两个方面总结:变量和成员函数。

    变量:const可以修饰普通变量、指针(数组)和结构体。

    1.const修饰普通变量是最简单的情形。这样的用法多为在程序中创建一个只读变量,类似于C语言的#define宏定义,但const声明的变量可以指定类型,因此在C++中提倡使用const关键字声明只读变量。

     const int Month = 12;  /* 示例代码 1 */

    示例代码1表示:定义了一个int型变量Month,程序可以使用该变量,但不可对Month变量重新赋值,如:

    int tmp = Month + 3;    /* 正确 */
    Month = 6;          /* 错误 */

    2.下面是const修饰指针的情形。这样的情形多见于将指针/数组作为某个函数的参数,为了防止调用该函数时无意或错误修改了原指针数据,常在指针参数前添加const关键字,如:

    void ShowMsg(const char *strMsg);  /* 示例代码 2 */

    示例代码2声明了一个返回值为void的函数ShowMsg,假设该函数的作用是显示某个字符串的内容,我们在使用的时候不希望该函数修改原字符串的内容,因此可以将参数前添加const关键字,这样,如果函数代码中错误出现了修改strMsg字符串的代码,程序编译将会报错。

    下面,分四种情况详细叙述const和指针的搭配:

    /* 示例代码 3 */
    int a = 10;
    const int *pB = &a;         /* 1 */   
    int const *pB = &a;       /* 2 */ 
    int * const pB = &a;       /* 3 */ 
    const int * const pB = &a;   /* 4 */ 

    请看示例代码3中的四种情形,我们可以这样来记忆:const位于星号左侧表示指针指向的变量为常值,上述1、2两种情况的作用一样,指针变量指向的值为常值,不可使用指针变量pB来修改该值,换句话说,*pB的值为const不可修改,即不可执行*pB = 11;(但是a = 11是合法的,int b = 11;pB = &b 也是合法的)。注意:可以将const变量的地址赋给const指针(如示例3),但不可将const变量的地址赋给非const指针。如以下代码是非法的:

    /* 错误代码示例 */
    const
    int a = 10; int *p = &a;

    const位于星号右侧表示是一个常量指针,该指针地址不可被修改。3表示pB只可指向&a地址,但可以使用*pB = 11来改变a的值。4是以上两种情况的综合。

    3.使用const修饰函数一般出现在成员函数中,如下形式:

    /* 示例代码4 */
    class
    Demo { private:     ......
      public:
        ...
        void ShowMsg() const;  /* 函数声明 */
    };

    像示例代码4中那样声明的函数称为const成员函数,该函数不会修改类对象,即不会对类的私有成员变量进行改动。

  • 相关阅读:
    HDU 3401 Trade
    POJ 1151 Atlantis
    HDU 3415 Max Sum of MaxKsubsequence
    HDU 4234 Moving Points
    HDU 4258 Covered Walkway
    HDU 4391 Paint The Wall
    HDU 1199 Color the Ball
    HDU 4374 One hundred layer
    HDU 3507 Print Article
    GCC特性之__init修饰解析 kasalyn的专栏 博客频道 CSDN.NET
  • 原文地址:https://www.cnblogs.com/gklovexixi/p/5619647.html
Copyright © 2020-2023  润新知