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

`
相关推荐
@小匠6 分钟前
Spring Boot Nacos绑定 Map 时中文 key 导致启动失败:一次从复现到源码的排查实录
java·开发语言·前端
Knight_AL6 分钟前
Lombok @Builder 踩坑:build() 前后对象类型不一样
android·java·开发语言
神明不懂浪漫23 分钟前
【第五章】队列
开发语言·数据结构·经验分享·笔记·算法
吃好睡好便好24 分钟前
MATLAB仿真框图3
开发语言·matlab·仿真·simulink
happy_baymax24 分钟前
MATLAB MCP Server+ MATLAB Agentic Toolkit+Simulink Agentic Toolkit自动更新批处理文件.ps1
人工智能·算法
-银雾鸢尾-39 分钟前
C#中的反射关键类-Type
开发语言·c#
大黄说说39 分钟前
Java 与 Kotlin 混合开发避坑指南:老项目平滑迁移 Kotlin 实操手册
java·开发语言·kotlin
breeze jiang40 分钟前
JavaScript 单例模式:用静态属性保证 Popup 只创建一次
开发语言·javascript·单例模式
橘和柠1 小时前
知识图谱实战(一):数据采集与实体关系抽取(完整代码)
算法
郝学胜_神的一滴1 小时前
C++20 高级编程 001:从极简HelloWorld到现代类型体系全梳理
c++·后端