c++ 中 const 和static

1. static

首先使用static的主要目的是控制存储周期, 链接性 和可见性
可以作为 1. 局部变量 2.类成员 3. 全局变量和函数

2. const

const 关键字用于声明一个变量为常量, 一旦初始化之后,它的值就不会被改变 。

2.1 常量表达式

声明为const的变量必须在编译时就已知, 并且不能被修改

2.2 类型修饰符 :

与static 不同的是, const可以作为类型修饰符,表示变量或者对象的状态不可以修改, 例如, const int 表示一个不可变的整型常量, const int* 表示一个指向整型常量的指针(是指 指针指向的值不可以变 , 但是指针本省可以变) 。

2.3 成员函数

在类的成员函数后使用const 关键字表示该成员函数不会修改对象的状态, 这中类函数可以称为(访问器或者只读函数)
如代码:

    Eigen::MatrixXd SolveQPClosedForm(
            int order,
            const Eigen::MatrixXd &Path,
            const Eigen::MatrixXd &Vel,
            const Eigen::MatrixXd &Acc,
            const Eigen::VectorXd &Time);
            //const Eigen::MatrixXd &Acc 常量引用,这意味着可以访问,但是不能修改它的值

3. const的作用

  1. 声明一个局部或者全局变脸那个为 常量
  2. 修饰函数的参数, 表示在函数提内部不能修改该参数的值
  3. 修改函数的返回值
    3.1. 如果给用const修饰的返回值的类型为指针 , 那么函数的返回值(即指针)的内容是不能被修改的 而且这个返回值只能赋值给被const 修饰的指针 就比如
const char getstring() ; 
char *str = getdtring() ; //这是不对的,因为str没有被const修饰  正确的应该是: 
const char * str = getstring() ; 

3.2 如果用const修饰的普通返回值,如 返回int 变量, 由于这个返回值是一个临时的变量, 在函数调用后也结束了这个临时变量的生命周期, 因此把这些返回值使用cost修饰是没有意义的。
4. 节省空间,避免不必要的内存分配

#define PI 3.1415926 ;  //该宏用来定义常量 
const double pi = 3.1415926 ; //此时并未将pi放入只读容器中
double i = pi ;  //此时pi分配内存, 此后不在分配
double I = PI ;//编译期期间进行内存分配 
double J = pi ;  //没有内存分配再次进行宏替换,有一次分配内存
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值