C++函数前后加const含义

const func():表示函数的返回值不会修改;

func() const:表示函数(类)成员不能修改。

举例说明:

1、const在函数前面:

当func前无const时:

class MyClass
{
public:
    int a;
    int& func(const int& val)     //这里将参数传递给a成员变量
    {
        this->a = val;
        return a;
    }   
};

int main()
{
    int val;
    MyClass *myClass = new MyClass();
    myClass->a = 10;                    
    val = myClass->func(20);            
    cout << "val:" << val <<endl;
    cout <<"myClass->a:" << myClass->a << endl;
    myClass->func(20) = 5; 
    cout <<"myClass->a:" << myClass->a << endl; 
    return 1;
}

运行代码返回结果:

val:20
myClass->a:20
myClass->a:5

可以看到myClass->func(20) = 5这句把类成员a的值改变了。

当func前有const时:

class MyClass
{
public:
    int a;
    const int& func(const int& val)     //这里将参数传递给a成员变量
    {
        this->a = val;
        return a;
    }   
};

int main()
{
    int val;
    MyClass *myClass = new MyClass();
    myClass->a = 10;                    
    val = myClass->func(20);            
    cout << "val:" << val <<endl;
    cout <<"myClass->a:" << myClass->a << endl;
    //myClass->func(20) = 5;   //有这句话会编译不过
    cout <<"myClass->a:" << myClass->a << endl; 
    return 1;
}

myClass->func(20) = 5这句需要屏蔽掉,否则会编译不过,更不会修改类成员a的值。

这样可以有效避免把if(myClass->func(20) ==1)写成if(myClass->func(20) =1)。编译器会直接告诉你语法错误。

2、const在函数后面:

class MyClass
{
public:
    int a;
    int& func(const int& val) const    //这里将参数传递给a成员变量
    {
        this->a = val;   //编译会报错
        return a;
    }   
};

类定义会编译报错,const修饰的时this指针,里面的成员不能够修改。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值