const的不同位置的用法

const int fun(const int var) const;

1、 第一个const:函数的返回值是const。

此处返回const值,意思指返回的原函数里的变量的初值不能被修改,但是函数按值返回的这个变量被制成副本,能不能被修改就没有了意义,它可以被赋给任何的const或非const类型变量,完全不需要加上这个const关键字.但这只对于内部类型而言(因为内部类型返回的肯定是一个值,而不会返回一个变量,不会作为左值使用),对于用户自定义类型,返回值是常量是非常重要的 [2].

#include <iostream>
using namespace std;

class A
{
public:
    int _a;
    A(int a):_a(a){}
    friend const A operator +(const A& lft,const A& rgt)
    {
        return A(lft._a + rgt._a);
    }
};

int main()
{
    A a(1),b(3),c(7);
    a + b = c; //error: passing 'const A' as 'this' argument discards qualifiers [-fpermissive]|
    A result = a + b + c; // 11
    cout << result._a << endl;
    return 0;
}
  • + 运算符重载加const 约束 对 a+b+c 这样的运算没有影响,因为a+b 运算的结果是const ,但对其只是只读操作,会创建一个新的 A 类返回。

2、第二个const:函数参数是const。传递过来的参数var在函数内不可以改变,一般我们的只读参数需要使用const来加以保护;

3、第三个const:该函数是const。编译器会对这个函数进行检查,在这个函数中的任何试图改变成员变量和调用非const成员函数的操作都被视为非法。
如:

int Stack::functiont(void)  const 
{ 
   ++ m_num; // 编译错误,企图修改数据成员 m_num 
   Pop();  // 编译错误,企图调用非const 函数 
   return m_num; 
 }

参考:
[1] c++函数返回类型什么情况带const
[2] C++中const的不同位置的用法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值