数据类型转换(static_cast, const_cast ,reinterpret_cast ,dynamic_cast )
来源:互联网 发布:关闭多台linux系统脚本 编辑:程序博客网 时间:2024/05/01 01:33
static_cast
const_cast
reinterpret_cast
dynamic_cast
1)staic_cast静态强制;
不能在无关的指针之间进行static类型强制
class CAnimal
{
//...
public:
CAnimal(){}
};
class CGiraffe:public CAnimal
{
//...
public:
CGiraffe(){}
};
int main(void)
{
CAnimal an;
CGiraffe jean;
an = static_cast<CAnimal>(jean);//将对象jean强制成CAnimal类型
return 0;
}
2、const_cast类型强制
const_cast类型强制将一个const变量变成一个非const的等价形式
int main()
{
const int j = 99;
int * k;
k = const_cast<int *>(&j);//解除const
return 0;
}
3、reinterpret_cast运算符
reinterpret_cast运算符用来将一个类型指针转变为另一种类型的指针,也用在将整开型量转为指针,或将指针转为整型量上;
int main()
{
int j = 10;
int * ptr = &j;
char * cptr;
cptr = reinterpret_cast<char *>(ptr);//将int指针类型转变为char的指针类型
return 0;
}
4、dynamic_cast运算符
dynamic_cast的主要目的是:
1)它返回派生类对象的地址;
2)它测试基类指针是否指向下一尖括号<>中所指定类型的对象
dynamic_cast是一个运行时类型信息,dynamic_cast运算符将指向派生对象的基类部分的基类指针转变为指向派生对象的派生类指针,dynamic_cast必须严格地指定与派生对象相同的类,或者它返回NULL指针;
class CAnimal
{
//...
};
class CGiraffe:public CAnimal
{
//...
};
class CGoat:public CAnimal
{
//...
};
int main()
{
CGiraffe gene;
CAnimal * aptr = &gene;
CGiraffe * ptr1,* ptr2;
ptr1 = dynamic_cast<CGiraffe *>(aptr);
ptr2 = dynamic_cast<CGoat *>(aptr); //return NULL
return 0;
}
const_cast
reinterpret_cast
dynamic_cast
1)staic_cast静态强制;
不能在无关的指针之间进行static类型强制
class CAnimal
{
//...
public:
CAnimal(){}
};
class CGiraffe:public CAnimal
{
//...
public:
CGiraffe(){}
};
int main(void)
{
CAnimal an;
CGiraffe jean;
an = static_cast<CAnimal>(jean);//将对象jean强制成CAnimal类型
return 0;
}
2、const_cast类型强制
const_cast类型强制将一个const变量变成一个非const的等价形式
int main()
{
const int j = 99;
int * k;
k = const_cast<int *>(&j);//解除const
return 0;
}
3、reinterpret_cast运算符
reinterpret_cast运算符用来将一个类型指针转变为另一种类型的指针,也用在将整开型量转为指针,或将指针转为整型量上;
int main()
{
int j = 10;
int * ptr = &j;
char * cptr;
cptr = reinterpret_cast<char *>(ptr);//将int指针类型转变为char的指针类型
return 0;
}
4、dynamic_cast运算符
dynamic_cast的主要目的是:
1)它返回派生类对象的地址;
2)它测试基类指针是否指向下一尖括号<>中所指定类型的对象
dynamic_cast是一个运行时类型信息,dynamic_cast运算符将指向派生对象的基类部分的基类指针转变为指向派生对象的派生类指针,dynamic_cast必须严格地指定与派生对象相同的类,或者它返回NULL指针;
class CAnimal
{
//...
};
class CGiraffe:public CAnimal
{
//...
};
class CGoat:public CAnimal
{
//...
};
int main()
{
CGiraffe gene;
CAnimal * aptr = &gene;
CGiraffe * ptr1,* ptr2;
ptr1 = dynamic_cast<CGiraffe *>(aptr);
ptr2 = dynamic_cast<CGoat *>(aptr); //return NULL
return 0;
}
- 数据类型转换(static_cast, const_cast ,reinterpret_cast ,dynamic_cast )
- 数据类型转换(static_cast, const_cast ,reinterpret_cast ,dynamic_cast )
- 数据类型转换(static_cast, const_cast ,reinterpret_cast ,dynamic_cast )
- 数据类型转换(static_cast, const_cast ,reinterpret_cast ,dynamic_cast )
- c++ 数据类型转换: static_cast dynamic_cast reinterpret_cast const_cast
- static_cast、dynamic_cast、reinterpret_cast、const_cast,指针,数据类型的强制转换
- 走进C++程序世界-------强制数据类型转换(static_cast、dynamic_cast、reinterpret_cast、const_cast)
- C++ 类型转换(static_cast、dynamic_cast、const_cast、reinterpret_cast)
- 【C++】强制类型转换(static_cast,reinterpret_cast,const_cast,dynamic_cast,explicit)
- c++类型转换(static_cast,reinterpret_cast,const_cast,dynamic_cast)
- C++中的类型转换(static_cast,dynamic_cast,const_cast,reinterpret_cast)
- static_cast dynamic_cast const_cast reinterpret_cast 类型转换
- 强制转换函数(const_cast,reinterpret_cast,static_cast,dynamic_cast)
- C++ - 类型转换 static_cast, dynamic_cast, reinterpret_cast, const_cast
- 类型转换static_cast dynamic_cast const_cast reinterpret_cast
- static_cast, const_cast, dynamic_cast, 和reinterpret_cast 类型转换
- static_cast、dynamic_cast、reinterpret_cast和const_cast 类型转换
- C++类型转换 static_cast, dynamic_cast, reinterpret_cast, const_cast
- android 语音播报(通过手说tts 实现中文语音播报)
- 关于面试常见的一个数组中找出出现一次的几个数字的问题
- Java线程:大总结
- android bluetooth开发基础-4设置蓝牙
- sqlite3使用简介
- 数据类型转换(static_cast, const_cast ,reinterpret_cast ,dynamic_cast )
- error C2381: “exit” : 重定义;__declspec(noreturn) 不同
- log4j.properties配置详解
- 关于android几种常见的UI综合
- 数据库运维常用命令
- jQuery操作Select下拉框标签的一些方法和属性整理
- Android路径中提取文件名
- 客户端与服务器端通信方式总结
- 算法理解——大数相乘问题