C++学习-2023/12/13-C++类型转换
2023-12-14 00:46:38
C++类型转换
static_cast
类似C语言强制类型转换
1.可以用做基本数据类型转换
2.把空类型的指针转换为目标指针类型
3.不能转换带有const属性指针
const_cast
提供一个常属性的接口
reinterpret_cast
说基本没用到
dynamic_cast:多态才会接触到
#include <iostream>
struct MM
{
char* name;
int age;
void setData(const char* mmName, int mmAge)
{
name = const_cast<char*>(mmName);
age = mmAge;
}
void printfData()
{
std::cout << name << "\t" << age << std::endl;
}
};
//1.基本类型转换
void TestTransform()
{
//1.基本类型转换
//C
int cnum = (int)1.1;
std::cout << cnum << "\n";
//C++方式
int cppNum = int(1.2);
std::cout << cnum << "\n";
}
void TestStatic_cast()
{
//C++提供的安全
double dNum = 1.11;
//static_cast<要转换的类型>(要转换的东西:表达式也可以)
int num = static_cast<int>(dNum);
std::cout << dNum << "\n";
//const类型转换:增加const
double eNum= 2.22;
const int fNum = static_cast<const int>(eNum);
std::cout << fNum << "\n";
const int cData = 1;
//错误用法
//int* pData = static_cast<int*>(&cData);
int* pData = const_cast<int*>(&cData);
std::cout << (*pData)+2000 << "\n";
MM m1;
m1.setData("喜德盛", 19);
m1.printfData();
char name[20] = "永久";
MM m2;
m2.setData(name, 18);
m2.printfData();
}
int main()
{
std::cout << "Hello World!\n";
TestStatic_cast();
}
文章来源:https://blog.csdn.net/weixin_47454452/article/details/134983043
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!