C++面试常见题目2_const 与 static

  • C++中const和static的用法
  • const关键字
  1. const的最初动机是取代预处理器#defines来进行值替代,它可以被用于指针,函数变量,返回类型,类对象以及成员函数。
  2. const对象默认为文件的局部变量,要使其可以在其他文件被访问,需要显示指定为extern。
  3. 对于指针来说,可以指定指针本身为const,也可以指定指针所指向的数据为const,或者二者同时指定为const。
  4. 对于非内部数据类型的输入参数,应该将“值传递”的方式改为“const引用传递”,目的是提高效率。对于内部数据类型的输入参数,不要将“值传递”的方式改为“const 引用传递”。否则既达不到提高效率的目的,又降低了函数的可理解性。
  • static关键字
  1. 函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此,其值在下次调用的时候仍然维持原始值。
  2. 在文件内的static函数只可以被这一文件内的其他函数调用,这个函数的使用范围被限制在声明它的文件内,即具有文件作用域的特点。
  • const和static在类中使用
  • const关键字
  1. const修饰类的成员常量,不能被修改,同时它只能在初始化列表中赋值初始化。
  2. const类对象/指针/引用,只能调用类的const成员函数,因此,const修饰成员函数的最重要作用就是限制对于const对象的使用。
  3. const成员函数可以访问非const对象的所有数据成员,也可以访问const对象内的所有数据成员。
  4. 非const成员函数可以访问非const对象的所有数据成员,但不可以访问const对象的任意数据成员。
  • static关键字
  1. 所有类对象共享一个static类成员,static类对象必须要在类外进行初始化。
  2. 由于static修饰的类成员属于类,不属于对象,因此static类成员函数是没有this指针的,this指针是指向本对象的指针。正因为没有this指针,所以static类成员函数不能访问非static的类成员,只能访问static修饰的类成员。
  3. 静态成员函数在创建对象前就可以使用了,非静态方法必须通过对象调用。
  • C++里的静态成员函数不能用constvolatile的原因
  1. static成员不是任何对象的组成部分,所以static成员函数不能被声明为const,毕竟,将成员函数声明为const就是承诺不会修改该函数所属的对象。最后,static成员函数也不能被声明为虚函数。

 

本系列文章目的为个人准备面试的简单总结,文中多有不足,敬请批评指正!

参考:

https://blog.csdn.net/u010182186/article/details/52671853

https://www.cnblogs.com/JiFfeiYu/p/6697195.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值