C++ 中函数和const关键字







#include  <iostream>
using   namespace   std;


class   A
{
int   data;
public:
int value1 = 10;
const int value2  = 20;  

A(int   da = 18) :data(da) {}


void   display1() { cout << data; }
void   display2()   const { cout << data; }
void   display3()   const
{
data += 100;   //error : 后面的const函数修饰符决定了,不能对类成员进行修改,且只能被 const修饰的A类的实例引用
}


const int GetData() const {
return data;
}


const int& GetValue() const {
return data;
}


const int* GetAge() const {
return &data;
}
};


void   main()
{
A   a1(18);
const   A   a2(28);    //const修饰的A类的实例a2,只能引用该类的const成员函数
//..................................................................................................................................
a1.display1();
a1.display2();        //非const修饰的对象,可以调用const修饰的类成员函数
a1.dispaly3();       //error   ,const声明的成员函数不能改变数据成员的值 
a1.value1;
a1.value1 += 1;
a1.value2;  
a1.value2 += 1;  //只读


a2.display1();       //error   ,const对象不能调用非const函数 
a2.display2();       //right 
a2.display3();       //error   ,const对象不能改变数据成员值 
a2.value1;
a2.value1 += 1;   //只读 
a2.value2;
a2.value2 += 1;  //只读


//..................................................................................................................................
//const int GetData() 返回类型const修饰符有什么用?No point?
int var1 = a1.GetData();
const int  var2 = a1.GetData();
int var3 = a2.GetData();
const int var4 = a2.GetData();


int data1 = a1.GetValue();     //right
const int  data2 = a1.GetValue();
int data3 = a2.GetValue();    //right
const int data4 = a2.GetValue();




int& Value1 = a1.GetValue();     //非const修饰dValue1,不能引用返回值被const修饰返回值的函数;
const int&  Value2 = a1.GetValue();
int& Value3 = a2.GetValue();    //非const修饰dValue1,不能引用返回值被const修饰返回值的函数;
const int& Value4 = a2.GetValue();


int* age1 = a1.GetAge();     //非const修饰age1,不能引用返回值被const修饰返回值的函数;
const int*  age2 = a1.GetAge();
int* age3 = a2.GetAge();    //非const修饰age3,不能引用返回值被const修饰返回值的函数;
const int* age4 = a2.GetAge();
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值