C++-nullptr-类型推导

1、nullptr(掌握)(NULL 就是0)

NULL 在源码当中就是0,因此可能会存在一些二义性的问题。

复制代码
#include <iostream>`
`#include <memory>`
`using namespace std;`


`void func(int a)`
`{`
`    cout << "a = " << a << endl;`
`}`

`void func(char *b)`
`{`
`    cout << "b = " << b << endl;`
`}`

`int main()`
`{`
`    func(NULL); // a == 0`
`    return 0;`
`}`

`

在C++11 中使用nullptr代替了NULL,作为空指针的表示方式。

复制代码
#include <iostream>`
`#include <memory>`
`using` `namespace std;`
`void` `func(int a)`
`{`
`    cout <<` `"a = "` `<< a << endl;`
`}`
`void` `func(char` `*b)`
`{`
`    cout <<` `"b = "` `<< b << endl;`
`}`
`int` `main()`
`{`
    `func(nullptr);` `// b`
    `return` `0;`
`}`
`

2、类型推导(auto掌握)

使用auto关键字可以推导类型。

复制代码
#include <iostream>`
`#include <memory>`
`using` `namespace std;`

`double` `test()`
`{`
    `return` `1.1;`
`}`

`int` `main()`
`{`

    `auto i =` `10;`    `// i的类型自动推导为整形(int)`
`    cout << i << endl;`

    `auto i2 =` `19.4;`
`    cout << i2 << endl;` `// i2的类型自动推导为浮点型`

    `auto i3 =` `new` `auto(10);` `// i3的类型被推导为 int *`
`    cout <<` `*i3 << endl;`

    `auto i4 =` `test();`
`    cout << i4 << endl;`

    `auto i5 =` `"hello";`
`    cout << i5 << endl;`

    `auto i6 =` `'a';`
`    cout << i6 << endl;`

    `delete i3;`
`    i3 =` `nullptr;`

    `return` `0;`
`}`

`

decltype 可以推导表达式的类型,需要注意的是,decltype只会分析表达式的类型,不会具体计算表达式里的值。(熟悉)

复制代码
#include <iostream>`
`#include <memory>`
`using` `namespace std;`


`int` `main()`
`{`
    `auto x =` `1;`
    `auto y =` `2;`

    `decltype(x+y+3*32+1.3) z =` `888.32;` `//int + int *int + double = double;`
`    cout << z << endl;`
`    cout <<` `sizeof(z)` `<< endl;`
    `return` `0;`
`}`

`
相关推荐
在黎明的反思2 分钟前
进程通信之消息队列(IPC)
算法
老鱼说AI27 分钟前
算法基础教学第一步:数据结构
数据结构·python·算法
2301_7951672028 分钟前
Python 高手编程系列八:缓存
开发语言·python·缓存
极地星光29 分钟前
C++链式调用设计:打造优雅流式API
服务器·网络·c++
8***293138 分钟前
Go基础之环境搭建
开发语言·后端·golang
Jing_Rainbow42 分钟前
【LeetCode Hot100 刷题日记(19/100)】54. 螺旋矩阵 —— 数组、矩阵、模拟、双指针、层序遍历🌀
算法·面试·程序员
Yue丶越1 小时前
【C语言】自定义类型:联合体与枚举
c语言·开发语言
小陈要努力1 小时前
Visual Studio 开发环境配置指南
c++·opengl
程序猿本员1 小时前
5. 实现
c++
csbysj20201 小时前
DOM 节点
开发语言