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

`
相关推荐
葵续浅笑18 分钟前
LeetCode - 杨辉三角 / 二叉树的最大深度
java·数据结构·算法·leetcode
装不满的克莱因瓶28 分钟前
【Java架构师】各个微服务之间有哪些调用方式?
java·开发语言·微服务·架构·dubbo·restful·springcloud
杨筱毅35 分钟前
【穿越Effective C++】条款13:以对象管理资源——RAII原则的基石
开发语言·c++·effective c++
qq_4798754336 分钟前
RVO和移动语义
前端·算法
菜小麒36 分钟前
推荐算法的八股文
算法·机器学习·推荐算法
煤球王子1 小时前
学而时习之:C++中的引用
c++
Miraitowa_cheems1 小时前
LeetCode算法日记 - Day 94: 最长的斐波那契子序列的长度
java·数据结构·算法·leetcode·深度优先·动态规划
Zz_waiting.1 小时前
统一服务入口-Gateway
java·开发语言·gateway
L_09071 小时前
【Algorithm】Day-11
c++·算法·leetcode
四维碎片1 小时前
【Qt】大数据量表格刷新优化--只刷新可见区域
开发语言·qt