C++ static、const、auto、explicit关键字作用
来源:互联网 发布:滴滴打车java面试题 编辑:程序博客网 时间:2024/05/18 02:41
一、static关键字作用:
1、函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;
2、在模块内的static全局变量可以被模块内所有函数访问,但不能被模块外的其他函数访问;
3、在模块内的static函数只能被这一模块的其他函数调用,这个函数的使用范围被限定在声明它的模块之中;
4、在类中static成员变量属于整个类所有,对类的所有对象都只有一份拷贝;
5、在类中的static成员函数属于整个类所有,这个函数不接受this指针,因而只能访问static成员变量。
二、const关键字的作用:
1、欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对其进行初始化,因为以后就没有机会再去改变它了;
2、对指针来说,可以限定指针本身为const,可以限定指针所指向的数据为const,或者二者同时为const。const限定其值不能被改变;
eg: const char* p=“abcdd” 说明p所指向的变量的值不能被改变。 char* const p=“abcdd”说明p指针所指针的地址不能被改变;
3、在一个函数内,const可以修饰形参,表明其是一个输入参数,在函数内部不能改变其值;
4、对于类的成员函数,若指定其为const类型,表明这是一个常函数,不能用于修改类的成员变量;
5、对于类的成员变量,有时候必须指针其返回值为const类型,以使得其返回值不能为“左值”。
三、auto关键字作用:
auto用来申明自动变量,表明变量具有本地范围,其实大多数普通声明方式声明的变量都是auto变量,不需要明确指定auto关键字。auto变量在离开作用域时会自动释放,不会发生内存溢出情况(除了包含指针的类)。使用auto变量的优势在于不需要考虑变量是否被释放。
四、explicit关键字:
explicit用来防止由构造函数定义的隐式转换,可以避免不合时宜的类型变换。
eg:
不加explicit关键字,构造时会进行隐式转换,在声明对象b时,等价于test temp("324");test b=temp
class test{public:test(const std::string strTest){}};int main(){testa("123");testb="324";//等价于test temp("324");test b=tempreturn 0;}
而如果在构造函数之前加上explicit关键字,编译器会提出错误如下:
1>d:\mytest\1111.cpp(11) : error C2440: “初始化”: 无法从“const char [4]”转换为“test”
1> class“test”的构造函数声明为“explicit”
在实际代码中可能不会出现这种故意造就的例子,但发生隐式转换,常常带来程序逻辑的错误,而且这种错误很难察觉。
effective c++中说:被声明为explicit的构造函数通常比其non-explicit兄弟更受欢迎。因为它们禁止编译器执行非预期(往往也不被期望)的类型转换。除非我有一个好理由允许构造函数被用于隐式类型转换,否则我会把它声明为explicit。我鼓励你遵循相同的政策。
- C++ static、const、auto、explicit关键字作用
- C语言中关键字auto、static、register、const、volatile、extern的作用
- C语言中关键字auto、static、register、const、volatile、extern的作用
- C语言中关键字auto、static、register、const、volatile、extern的作用
- C语言中关键字auto、static、register、const、volatile、extern的作用
- C语言中关键字auto、static、register、const、volatile、extern的作用
- C语言中关键字auto、static、register、const、volatile、extern的作用
- C语言中关键字auto、static、register、const、volatile、extern的作用
- C语言中关键字auto、static、register、const、volatile、extern的作用
- C语言中关键字auto、static、register、const、volatile、extern的作用
- C语言中关键字auto、static、register、const、volatile、extern的作用
- 简单介绍C语言中auto,register,static,const,volatile,extern等几个关键字的作用
- C语言中volatile/register/const/static/extern/auto关键字的作用
- C语言中关键字auto、static、register、const、volatile、extern的作用
- C语言关键字auto、static、register、const、volatile、extern的作用
- C语言中关键字auto、static、register、const、volatile、extern的作用
- C语言中volatile、register、const、static、extern、 auto关键字的作用
- static,const,auto各个关键字的作用域和用法
- android 添加新的键值,自定义按键
- C++ Builder中加载ini文件
- HttpClient 4.3.X教程(转载)
- VL01N销售订单拣配bapi
- Graphics2D 绘制图形
- C++ static、const、auto、explicit关键字作用
- 井字棋游戏
- 批量生成销售订单、退货订单
- MongoDB 分片技术
- Jenkins+Maven+SVN快速搭建持续集成环境
- [leetcode-371]Sum of Two Integers(java)
- 同IP不同端口Session冲突问题
- Android 一个程序多入口多icon多界面
- Linux命令 touch