C++学习day15之const

#include<iostream>
using namespace std;


/*
 *const修饰符
 *1.const可以修饰数据成员,成员函数,类对象
 *2.修饰数据成员的时候:初始化的位置只能在参数列表里面。
 *                      虽然你在构建类成员的时候能给初始值
 *                      但是我们构造类成员是用来定义类型的。
 *                      类型里面怎么可能有数字呢。
 *                      被const修饰的数据成员,不能被修改。
 *3.修饰成员函数
 *  位置 
 *  int const func()和const int fun()是一样的
 *  类比 int const a 和const int a。
 *  你 int func(const )这样就是修饰参数
 *  所以,const修饰函数放到,声明之后,实现体之前,大概也没有别的地方可以
 *  放了。
 *  int func()const
 *  {
 *
 *  }
 *  意义在于声明这个函数为const,保证不会修改数据成员。
 *  能访问const和非const 数据成员 但不能修改非const数据成员
 *  只能访问 const的成员函数
 *  还可以构成重载,
 *  什么意思呢,看下面的例子
 *  你可以有
 *  void dis() const
 *  {
 *
 *  }
 *  也可以有
 *  void dis()
 *  {
 *
 *  }
 *  const 成员函数要求在声明和定义处都要有const  
 *4. 还可以修饰类对象
 * const 修饰函数 是从函数的层面不修改数据
 * const 修饰对象,是从对象的层面不修改数据,只能调用const成员函数
 * 非const成员对象,优先调用非const成员函数,如果没有非const成员函数
 * 就调用const成员函数
 *
 *const A b;
 */
class A
{
public:
    A(int a=0)
        :val(a)
    {
    
    }
    void print()
    {
        x=200;
        y=300;
    }
//如果你的对象是const的时候,访问的就是void display const,不能访问void display
//如果你的对象是非const的时候,你可以访问const也可以访问非const。优先调用
//非const成员函数,若无非const成员函数,就去调用const成员函数
  

    void display() const
    {
        cout<<val<<endl;
        //x=200 这里会报错,因为你这个函数被设置成const
        //但是你自定义的是可以的。比如
        int a;
        a=200;
        cout<<"const"<<endl;
     //   print();
      //  x=200;
    }

/*
    void display()
    {
        print();
        cout<<"no const"<<endl;
    }
*/
private:
    const int val;
    int x,y;
};

int main()
{
    A a(1000);
    a.display();
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值