const 作用

      面试遇到了问const作用,当时只说了是用来定义常量的,使其值不可改变。

      C言中是用define来定义常量,而C++中引入了const;

 

      回来通过自己查资料才知道 const 主要有3种用法:

     (1)  用来修饰函数参数

       如果是输出参数的话,是不要用const修饰的,因为输出值是可变的,无法固定。

       如果是输入参数的话,分为两种情况:

             a) 指针传递 :

                         加上const,防止意外修改指针,起保护作用

                   比如strcpy(char* strDest, const char* strSrc);如果函数内部修改了strSrc的内容,编译器将会报错

             b) 值传递

                   比如 func(int a);此时是没有必要加上const修饰的,因为函数自动产生临时变量用来复制该参数,本来就无需保护。

                  所以不要将func(int a)改成 func(const int a);同样,不要将foo(A a) 改为foo(const A a);其中,A为自定义参数类型;

                  但是 对于 foo(A a)这类函数,注定了它的效率会很低,因为是非内部函数,要创建临时对象,所以在构造,复制,析构这些过程非常浪费时间;这时候可以 用&,也就是“引用传递”,foo(A &a),“引用传递”只是用了一个别名而已,没有创建临时对象,不会浪费时候,但是这个时候,“引用传递”会产生另一个问题,就是a的值会被函数改变,这时候就可以写成 foo(const A& a);

               对于非内部函数,应该将“值传递”改为“const 引用传递”,如foo(A a)-----》foo(const A& a)

               对于内部函数,值传递没有必要改成const引用传递,比如 func(int a)---》func(const int a)既达不到提高效率的目的,又让人难以理解。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值