C++第01课 C++与C的区别(六)
2021/9/3 22:06:05
本文主要是介绍C++第01课 C++与C的区别(六),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.类型推断
int Max(int a, int b) { return a > b ? a : b; } //错误,没有推断依据 //auto Max(auto a, auto b) //{ // return a > b ? a : b; //} int main() { //常量 auto pInt = 1; //表达式 int x = 0; int y = 1; auto z = x + y; //函数指针 auto pMax = Max; cout << pMax(1, 3) << endl; //获取推断类型,也就是整个表达式就是我们的类型 decltype(x + y) b = x + y; //decltype(x+y)得到的int,即b的类型为int //打印类型,类型萃取 cout << typeid(Max).name() << endl; //类型为 int __cdecl(int,int) return 0; }
2.C++中const
C++中对const要求严格。const在定义时必须初始化且变量不能被修改。
int main() { //以下为等效写法 const int a = 10; int const b = 10; //以下两种也等效 const int* pa = &a; //修饰的是指针所指向内存中存储的数据类型是不可修改的 pa = &b; int const* paa = &a; //修饰指针 int a_num = 101; int* const pac = &a_num; //pac++; 错误,const修饰了pac,不可修改 return 0; }
3.C++类型转换
int main() { //C语言方式 int a = (int)1; //C++最朴素的转换方式 int aa = int(1.11); //不朴素的方式 /*const_cast 去掉const属性 static_cast 一般数据类型转换 reinterpret_cast 指针类型转换,一般把空类型指针转为其他类型指针 dynamic_cast 多态*/ int x = 0; const int* p = &x; //*p=1001 错误,p所指内存中存储的数据被const修饰 //int* pconst = p; 错误 int* pp = const_cast<int*>(p); //等效c语言强转 int*pp=(int*) p; *pp = 1001; //*p=1001 错误 int num = static_cast<int>(1.11); int g_num = 1001; void* pVoid = &g_num; int* pInt = reinterpret_cast<int*>(pVoid); cout << *pInt << endl; return 0; }
这篇关于C++第01课 C++与C的区别(六)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享