c++ const的用法

const的用法详解

const作为c++中的关键字,用法非常的灵活,通过使用const可以大大改善程序的健壮性,因此本文总结一下const的用法,方便日后查找

const的作用

一、定义常量

便于进行类型检查。const常量有数据类型,编译器可以进行类型检查,而宏常量没有数据类型,编译器只进行字符替换,没有安全类型检查,并且在字符替换时可能产生意料不到的错误。

const int max = 100;

二、修饰函数参数

const用来修饰函数参数,如果修饰的参数为按值传參,那么传入的参数不可以被修改,实际上意义并不是太大,如果参数为指针的时候,那么传入将会是实参,为了保证实参的值不会受到影响使用const进行保护,使得在函数体内不会改变实参的数据。

const指针可以接受非const指针参数,但是非const指针不能接受const指针参数。

常量指针:const char* a;
不能通过指针a去修改a指向的对象的内容

指针常量

char * const a;
不能修改a,但可以修改a指向的对象的内容

二者都不可变

const char* const a;

三、用于类相关的

  1. const 修饰成员变量
    const修饰类的成员函数,表示成员常量,不能被修改,同时它只能在初始化列表中赋值。
class A
{
  …
  const int nValue;         //成员常量不能被修改
  …
  A(int x): nValue(x) { } ; //只能在初始化列表中赋值
}
  1. const修饰成员函数
    const修饰类的成员函数,则该成员函数不能调用类中任何非const成员函数,因为非const函数可能会修改对象的数据成员。一般写在函数的最后来修饰。
class A
{
 void function() const; //常成员函数, 它不改变对象的成员变量.                        

//也不能调用类中任何非const成员函数。
}

对于const类对象/指针/引用,只能调用类的const成员函数,因此,const修饰成员函数的最重要作用就是限制对于const对象的使用。

a. const成员函数不被允许修改它所在对象的任何一个数据成员。

b. const成员函数能够访问对象的const成员,而其他成员函数不可以。

(3)const修饰类对象/对象指针/对象引用

返回指向const对象的引用
返回对象会调用复制构造函数,但是返回引用不会,因此将返回值定义为引用类型

const Vector & max(const Vector& v1, const Vector& v2) {
    if (v1.mgval() > v2.mgval()) {
        return v1;//引用指向的对象在函数调用时存在,不是局部变量,因此可行
    }
    
    return v2;
}

返回const引用

;//引用指向的对象在函数调用时存在,不是局部变量,因此可行
}

return v2;

}


**返回const引用**

如果方法或函数要返回局部对象,则应返回对象,而不是指向对象的引用。在这种情况下将使用复制构造函数来生成返回的对象。如果方法或函数要返回一个没有公有复制构造函数的类的对象,它必须返回一个指向这种对象的引用。最后,有些方法和函数可以返回对象也可以返回指向对象的引用,在这种情况下,应首选引用,因为这种效率更高
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值