see #12: translate ch09

This commit is contained in:
Changkun Ou
2019-07-14 23:10:07 +02:00
parent 3fc59f9bea
commit 9779283735
6 changed files with 189 additions and 24 deletions

View File

@@ -6,19 +6,23 @@ order: 9
# 第 9 章 其他杂项
> 内容修订中
[TOC]
## 9.1 新类型
### `long long int`
`long long int` 并不是 C++11 最先引入的,其实早在 C99`long long int` 就已经被纳入 C 标准中所以大部分的编译器早已支持。C++11 的工作则是正式把它纳入标准库,规定了一个 `long long int` 类型至少具备 64 位的比特数。
`long long int` 并不是 C++11 最先引入的,其实早在 C99
`long long int` 就已经被纳入 C 标准中,所以大部分的编译器早已支持。
C++11 的工作则是正式把它纳入标准库,
规定了一个 `long long int` 类型至少具备 64 位的比特数。
## 9.2 noexcept 的修饰和操作
C++ 相比于 C 的一大优势就在于 C++ 本身就定义了一套完整的异常处理机制。然而在 C++11 之前,几乎没有人去使用在函数名后书写异常声明表达式,从 C++11 开始,这套机制被弃用,所以我们不去讨论也不去介绍以前这套机制是如何工作如何使用,你更不应该主动去了解它。
C++ 相比于 C 的一大优势就在于 C++ 本身就定义了一套完整的异常处理机制。
然而在 C++11 之前,几乎没有人去使用在函数名后书写异常声明表达式,
从 C++11 开始,这套机制被弃用,所以我们不去讨论也不去介绍以前这套机制是如何工作如何使用,
你更不应该主动去了解它。
C++11 将异常的声明简化为以下两种情况:
@@ -93,16 +97,19 @@ try {
### 原始字符串字面量
传统 C++ 里面要编写一个充满特殊字符的字符串其实是非常痛苦的一件事情,比如一个包含 HTML 本体的字符串需要添加大量的转义符例如一个Windows 上的文件路径经常会:`C:\\What\\The\\Fxxk`
传统 C++ 里面要编写一个充满特殊字符的字符串其实是非常痛苦的一件事情,
比如一个包含 HTML 本体的字符串需要添加大量的转义符,
例如一个Windows 上的文件路径经常会:`C:\\File\\To\\Path`
C++11 提供了原始字符串字面量的写法,可以在一个字符串前方使用 `R` 来修饰这个字符串,同时,将原始字符串使用括号包裹,例如:
C++11 提供了原始字符串字面量的写法,可以在一个字符串前方使用 `R` 来修饰这个字符串,
同时,将原始字符串使用括号包裹,例如:
```cpp
#include <iostream>
#include <string>
int main() {
std::string str = R"(C:\What\The\Fxxk)";
std::string str = R"(C:\File\To\Path)";
std::cout << str << std::endl;
return 0;
}
@@ -113,7 +120,6 @@ int main() {
C++11 引进了自定义字面量的能力,通过重载双引号后缀运算符实现:
```cpp
// 字符串字面量自定义必须设置如下的参数列表
std::string operator"" _wow1(const char *wow1, size_t len) {
return std::string(wow1)+"woooooooooow, amazing";