C++ 的强制转换一般在什么时候用 static

C++ 的强制转换一般在什么时候用 static
最新回答
别离我

2022-07-15 02:20:20

  1. C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。

  • 静态全局变量:
    在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。

  • 静态局部变量:
    在局部变量前,加上关键字static,该变量就被定义成为一个静态局部变量。

  1. static_cast是一个强制类型转换操作符。强制类型转换,也称为显式转换,C++中强制类型转换操作符有static_cast、dynamic_cast、const_cast、reinterpert_cast四个。

  • double a = 1.999;
    int b = static_cast<double>(a); //相当于a = b ;
    e:\vs 2010 projects\static_cast\static_cast\static_cast.cpp(11): warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据

  • 编译器隐式执行的任何类型转换都可以由static_cast来完成,比如int与float、double与char、enum与int之间的转换等。

  • 当编译器隐式执行类型转换时,大多数的编译器都会给出一个警告:

  • 使用static_cast可以明确告诉编译器,这种损失精度的转换是在知情的情况下进行的,也可以让阅读程序的其他程序员明确你转换的目的而不是由于疏忽。

  • 把精度大的类型转换为精度小的类型,static_cast使用位截断进行处理。

  • static_cast可以把任何类型的表达式转换成void类型。

  • static_cast把任何类型的表达式转换成void类型。

  • 另外,与const_cast相比,static_cast不能把换掉变量的const属性,也包括volitale或者__unaligned属性。