现代C++实战30讲
吴咏炜
前 Intel 资深软件架构师
立即订阅
3689 人已学习
课程目录
已更新 14 讲 / 共 30 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (2讲)
开篇词 | C++这么难,为什么我们还要用C++?
免费
课前必读 | 有关术语发音及环境要求
基础篇 (9讲)
01 | 堆、栈、RAII:C++里该如何管理资源?
02 | 自己动手,实现C++的智能指针
03 | 右值和移动究竟解决了什么问题?
04 | 容器汇编 I:比较简单的若干容器
05 | 容器汇编 II:需要函数对象的容器
06 | 异常:用还是不用,这是个问题
07 | 迭代器和好用的新for循环
08 | 易用性改进 I:自动类型推断和初始化
09 | 易用性改进 II:字面量、静态断言和成员函数说明符
提高篇 (3讲)
10 | 到底应不应该返回对象?
11 | Unicode:进入多文字支持的世界
12 | 编译期多态:泛型编程和模板入门
现代C++实战30讲
登录|注册

09 | 易用性改进 II:字面量、静态断言和成员函数说明符

吴咏炜 2019-12-16
你好,我是吴咏炜。
本讲我们继续易用性的话题,看看现代 C++ 带来的其他易用性改进。

自定义字面量

字面量(literal)是指在源代码中写出的固定常量,它们在 C++98 里只能是原生类型,如:
"hello",字符串字面量,类型是 const char[6]
1,整数字面量,类型是 int
0.0,浮点数字面量,类型是 double
3.14f,浮点数字面量,类型是 float
123456789ul,无符号长整数字面量,类型是 unsigned long
C++11 引入了自定义字面量,可以使用 operator"" 后缀 来将用户提供的字面量转换成实际的类型。C++14 则在标准库中加入了不少标准字面量。下面这个程序展示了它们的用法:
#include <chrono>
#include <complex>
#include <iostream>
#include <string>
#include <thread>
using namespace std;
int main()
{
cout << "i * i = " << 1i * 1i
<< endl;
cout << "Waiting for 500ms"
<< endl;
this_thread::sleep_for(500ms);
cout << "Hello world"s.substr(0, 5)
<< endl;
}
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《现代C++实战30讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(6)

  • 三味
    如果对一个函数声明了final, 我觉得没有必要在添加override了吧.
    override就是明确声明这是一个继承来的函数, final同样也是这个意思, 只不过final更霸道, 后续的不要在继承了!
    如果从一开始就不想让别的函数去继承而写final, 那就根本没必要去virtual它. 何必要在虚函数表中添加一个没有继承作用的虚函数呢?

    PS: 数字分隔符和自定义字面量真是学到了. 在9102年的尾巴, 我才知道有这么邪道的用法...
    PPS: 前些日子看了一些国外游戏大牛各种喷C++的帖子. 本章的所有内容应该都是他们喷的范围吧... 那些人特别看中编译时间, 追求极致的运行效率... 有个人专门对比了int a=7; 和 int a{7}的性能差别...从编译到运行时间... 利用宏展开的方式, 对这两个例子分别做了百万次展开, 如果用vs测试都能爆IDE内存的级别... 我觉得对于中小型对性能不是特别敏感的程序, 这些还是很有用的.
    PPPS: 最近对Data-oriented design感兴趣, 不知道作者以后是否有开这类理论实战课程的计划捏? 我搜索上面喷神, 就是从这里开始搜索出来的...

    作者回复: 对,final override 合法但不必要。

    当然不是所有内容都是被那个游戏开发人士喷的。他抱怨的是会导致编译速度下降,以及非优化编译性能差的那部份功能。通常都是模板相关的。所以这一讲的内容不属于其中。

    2019-12-20
    1
  • 小一日一
    我最喜欢的C++易用性改进及理由:
    auto: 少打字
    scope for:少打字
    类成员默认补始化语法:少打字
    default 和 delete 成员函数:简化对类行为的控制难度
    自定义字面量:代码看起来舒服。

    作者回复: 都用上了吗?很好啊。

    2019-12-16
    1
    1
  • 木瓜777
    您好,您有没有感觉比较好的开源c++项目推荐?
    希望从别人的项目中学到一些经验,谢谢!

    作者回复: C++ 项目入门都不容易,要找自己有兴趣的领域是关键。除了第 6 讲评论里推荐的那些,可以考虑下面两个(我将来也会讲到):

    - EasyLogging++
    - Catch2

    2019-12-17
    1
  • hello world
    平时自己主要用到的就是auto和default和delete override,方便且避免出错

    作者回复: 其他的也要考虑用起来啊。

    2019-12-16
  • 墨梵
    auto 和 for loop range base的搭配

    作者回复: 嗯,这个搭配很爽的。

    2019-12-16
  • 西钾钾
    auto 与 新的 for 遍历方法,因为实在是方便而且用的最多。其他的特性 ... 工作中貌似还没怎么用过😭

    作者回复: 没成本的改进,能用就用起来吧。

    2019-12-16
    2
收起评论
6
返回
顶部