- Chapter 2
- low-level & top-level const
- constexpr
- type alias
- pointer alias
- decltype
- decltype 与 引用
- Chapter 3
-
- 多维数组的类型别名
-
- Chapter 6 函数
- 声明一个返回数组指针的函数
- 函数重载
- const_cast
- 函数实参
- 默认实参
- 默认实参初始值
- Chapter 7 类
- 特性
- 可变数据成员
- 返回*this的成员函数
- 基于const的重载
- 委托构造函数
- 特性
- Chapter 8
- string流
- istringstream
- ostringstream
- string流
- Chapter 9
- 容器操作
- emplace
- 适配器
- 容器操作
- Chapter 10
- 泛型算法
- lambda 表达式
Chapter 2
low-level & top-level const
int i = 0;
int *const p1 = &i; // top-level
const int c1 = 42; // top-level
const int *p2 = &ci; // low-level
const int *const p3 = p2; // low-level (left) & top-level (right)
const int &r = ci; // both low-level
constexpr
constexpr int mf = 20;
type alias
typedef double wages; // classic
typedef wages base, *p;
using SI = Sales_item; // C++11
pointer alias
typedef char *pstring;
const pstring cstr = 0; // cstr是指向char的常量指针
const pstring *ps; // ps是一个指针,它的对象是指向char的常量指针
const char *cstr = 0; // [注意]与 const pstring cstr 不同!
decltype
decltype(f()) sum = x;
decltype 与 引用
decltype(i) e; // 正确
decltype((i)) d; // 错误, d 是 int&
Chapter 3
多维数组的类型别名
using int_array = int[4];
typedef int int_array[4];
Chapter 6 函数
声明一个返回数组指针的函数
int (*func(int i))[10];
auto func(int i) -> int(*)[10]; // lamabda
函数重载
const_cast
const string &shorterString(const string&, const string &);
// 使用const_cast重载原函数的非常量版本
string &shorterString(string &s1, string &s2)
{
auto &r = shorterString(
const_cast<const string&>(s1),
const_cast<const string&>(s2));
return const_cast<string&>(r);
}
函数实参
默认实参
typedef string::size_type sz;
string screen(sz, sz, char = ' ');
string screen(sz, sz, char = '*'); // 错误
string screen(sz = 24, sz = 80, char); // 正确
默认实参初始值
sz wd = 80;
char def = ' ';
sz ht();
string screen(sz = ht(), sz = wd, char = def);
string window = screen(); // 调用 screen(ht(), 80, ' ');
Chapter 7 类
特性
可变数据成员
关键字 mutable
返回*this的成员函数
返回*this表示将对象作为左值返回,意味着可以将一系列操作连接在一条表达式中
myScreen.move(4, 0).set('#');
基于const的重载
class Screen {
public:
Screen &display(std::ostream &os) {
do_display(os); return *this;
}
const Screen &display(std::ostream &os) const {
do_display(os); return *this;
}
}
Screen myScreen(5, 3);
const Screen blank(5, 3);
myScreen.set('#').display(cout); // 非常量版本
blank.display(cout); // 常量版本
委托构造函数
一个委托构造函数使用它所属类的其他构造函数执行它自己的初始化过程
Chapter 8
string流
istringstream
istringstream record(line);
record >> info.name;
ostringstream
ostringstream formatted;
formatted << anyString << endl;
cout << formatted.str();
Chapter 9
容器操作
emplace
以下等价
c.emplace_back(args);
c.push_back(T(args));
适配器
stack<int, vector<int>>stk; // 使用vector构造stack适配器
Chapter 10
泛型算法
back_inserter
插入迭代器for_each
lambda 表达式
- 值捕获
- 引用捕获
- 隐式捕获
时间: 2024-10-12 13:05:15