关于const(C++)

  1. 在函数前后的区别
  • 在函数中:防止参数在函数体中被修改

void Func(int a){
    a=2;
}
//若希望a不能在函数体中被修改,加const
void Func(const int a){
    //a=2;该操作会报错
}
  • 在函数前:约束函数的返回值,返回值为const,不能为左值。

防止返回值直接被赋值,但是可以赋值给别的变量,一般变量无法体现其不能为左值的性质。

函数返回类型为指针类型时,可以通过指针对返回值进行修改。

const int Sum1(int a,int b){
    return a+b;
}
const int* Sum2(int a,int b) {
    int* n = new int;
    *n = a + b;
    return n;
}
int main(){
    int c1 = Sum1(1,2);
    c1=5;//可以运行,无法体现
    int* c = Sum2(1, 2);
    //c = 2;  报错,不能修改常对象
    
}
  • 在函数后:在类中使用,表示函数不可修改class 中的成员

//在成员函数后面加const,修饰的是this指针,让指针指向的值也不可以修改
class Student{
public:
    void show() const
    {
        //this->name = "Jerry";  报错,不可修改成员变量
        age = 10; //使用了mutable关键字,不报错
        //this = NULL;指针指向不可修改
    }
    
    string name;
    mutable int age;//特殊变量,即使在常函数中也可以修改这个值,加关键字mutable
    
};

  1. 在指针中的区别
  • 常量指针: const修饰指针,指针指向的值不可以改,指针的指向可以改

int a = 10;
int b = 10;
const int* p = &a;
//*p=20; 错误
p = &b;//正确
  • 指针常量: const 修饰常量,指针的指向不可以改,指针指向的值可以改

int a = 10;
int b = 10;
int* const p2 = &a;
*p2 = 100;//正确
//p2 = &b;错误
  • const修饰指针和常量,指针的指向和指针指向的值都不可以改

int a = 10;
int b = 10;
const int  *const p3 = &a;
//*p3 = 100; 错误
//p3 = &b;

tips:看const右侧紧跟着的是指针还是常量,是指针就是常量指针,是常量就是指针常量

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值