c++语法学习(const和static关键字)

const使用:
1。extern关键字的使用,extern外部声明,告诉编译器,找全局变量,不引入头文件,加速编译,const修饰的变量必须赋初值,如果想要外部使用该变量,必须加extern声明,非const的默认extern。
2.不能通过void* 保存const对象地址,必须使用const void* 保存对象地址,const指针必须初始化,const char*a不用初始化,因为a是可以改变的,常指针:const char a必须初始化。 const int num=0;int * const ptr=#
ptr指向变量,不能赋值为指向常量的指针。(总结:不能让给指向常量的指针赋值为指向变量的指针)
3.const修饰函数参数,如果是简单类型,没必要进行const int &a这种的,因为简单类型值传递和引用效率没差别,如果是复杂类型的就需要使用const int &了,传入引用且防止被修改。
4.成员函数只要是不修改成员变量,就设置为const函数,防止被修改。const成员函数只能访问const成员函数。如果有const成员变量就需要构造函数初始化列表初始化(或者定义为static const int a,在类外进行初始化),const对象只能访问const成员函数。
5.通过const和
的位置来看出是指向常量还是本身是常量。

static的注意事项:
1.变量或者对象只能初始化一次(并不是不可以可以修改)。
2.静态成员函数只能访问静态成员和静态成员函数。
3.静态成员限制作用域,只能在本文件中使用。
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述
关于github评论区有人问,为什么const char* msg=" …"不用外部声明,而编程const string定义msg字串的时候就需要在定义的时候显式声明extern,我的理解是:这里的const修饰的不是msg这个指针,而是指针的内容。另一个文件只是调用了msg的指针,它本身不是const,所以不需要显式声明。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值