C++ const (tcy)

1.1.用途:
    1)const修饰数据类型:常量定义-限制该变量不可修改
    2)const修饰函数:
       a)修饰参数则参数不可修改;
       b)修饰返回值:常量
          用const修饰返回值为对象本身(非引用和指针)多用于二目操作符重载函数并产生新对象

    3)const在类用法:
       a)const成员变量=常量,必须在类内初始化
       b)成员函数void A::fun()const; 
          const修饰成员函数中不能修改成员变量,不能调用非const修饰函数
       c)const修饰类对象:常量对象只能调用常量函数,别的成员函数都不能调用
          

1.2.说明:
    1)指针pointer是用来指向实际内存地址的变量,是整型
    2)引用reference是变量别名,函数直接访问参数(而非副本)
       是受限制指针类型,是指针一个子集,是指针功能一种高层实现
    3)允许在类中初始化const,static const变量,普通变量,static变量则不可;

1.3.使用建议
   1)建议尽量使用const,避免赋值操作错误
   2)参数中const应使用引用或指针,而非一般对象实例
   3)不要轻易的将函数返回值类型定为const;
   4)除重载操作符外不要将返回值类型定为对象const引用;   
2.实例:
     
实例1:
    //1.修饰基本数据类型 
    const int a=10; //等价int const a=10;
    const int arr[3]={1,2,3}; 

    //2.const修饰指针(*):
    int a=1,*p= &a; &*p == *&p;

    const int* p;          //指针变量->常量   ==int const *p
    int* const p ;         //常量指针->变量 
    const int* const p ;   //常量指针->常量

    说明:
        如const位于星号*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;
        如const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。

    //3.const修饰引用(&):
    const int &a=x;//==int const &a=x;
    int &const a=x;//警告:不合法语法-忽略&const  ==int a=x;  

 

实例2:const应用到函数中  
    //1.函数输入参数:参数不可修改
    void fun0(const A* a ); //指针:*a只读不能修改
    void fun1(const A& a);  //引用:禁止对引用对象a修改

    //2.修饰返回值:返回值为常量
    const A fun2();         //const按照"修饰原则"进行修饰,起到相应的保护作用
    const A *fun3();
    
    //3.类中的成员函数:
    A fun4()const;          //不能修改所在类的的任何变量
实例3:类中定义常量

    //1.使用枚举类型 
    class A {
        enum { SIZE1 = 10, SIZE2 = 20 }; // 枚举常量
        int array1[SIZE1];
        int array2[SIZE2];
    };

    //2.使用const或static
    //C++11禁在类声明中初始化static非const类型数据成员
    // using y++11 standard
    class B {
    public:
      //static int g = 1;         // Error
        static int g;             //静态变量必须在类外初始化
        static const int x = 2;   // 常量必须在定义时初始化
        const int y = 3;          // Ok in C++11
        int z = 4;                // Ok in C++11

    public:
        B() :y(-3) { }            // Ok in C++11
        int const_get_c() const{ return y; }
        const int get_ci() { return y; }
        int get_c(){return y;}
        void set_z(int z) { this->z = z; }
    };

    int B::g = 1;
    int main()
    {
        B b;
        cout << (b.g+b.x +b.y+b.z) << endl;//1,2,-3,4==4

        b.set_z(5);
        cout << b.z << endl;               //5

        const B c;
        c.const_get_c();
      //c.get_c();  //error
      //c.get_ci(); //error

        return 0;
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值