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;`
`}`

`
相关推荐
xys_67815 分钟前
深挖数据结构:树和二叉树(上)
数据结构·算法
\光辉岁月/18 分钟前
3.包装类
java·开发语言·包装类
衍玊19 分钟前
多路转接原理与应用
c++
Interview Aid11239 分钟前
Google SWE Intern VO 面经:两轮 Coding,Follow-up 考察 BFS 状态
算法
FRing031 小时前
JavaScript入门到精通二十四(正则表达式、元字符、修饰符)
开发语言·前端·javascript·正则表达式
西索斯coding1 小时前
Grok 4.7 调用一直 401 怎么办?不是 Key 过期,是 Authorization 头格式问题——排查全流程 + 修复示例
服务器·开发语言·ai·php
琳达爱分享1 小时前
从单机令牌桶到集群限流:一次配额超发的复盘
后端·算法
range1 小时前
带TTL的LRU缓存的实现-字节手撕-26/10/19
算法
糖果豆豆1 小时前
n log n 到底从哪来?排序下界、2-SAT 与 3-SAT、停机问题,卡的是同一件事
算法·架构
地平线开发者1 小时前
【玩转 征程6 算法工具链:PTQ 工具篇】hb_verifier
算法·自动驾驶