August 2021
Intermediate to advanced
450 pages
5h 35m
Chinese
一个函数只能返回一个值,但这个值可以是一个包含很多成员的类对象。这令我们可以高效地返回很多值。例如:
在本例中,我们用{s,i}构造Entry类型返回值。类似地,可以将一个Entry的成员“解包”到局部变量中:
auto[n,v]声明了两个局部变量n和v,它们的类型是从read_entry()的返回值推断出来的。这种为类对象的成员赋予局部名字的机制称为结构化绑定(structured binding)。
考虑另一个例子:
照例,我们用const和&装点auto。例如:
当我们将结构化绑定用于没有私有数据的类时,很容易看到绑定是如何进行的:定义的用于绑定的名字数目必须与类的非静态数据数目一致,且绑定时引入的每个名字为对应的成员命名。与显式使用组合对象的版本相比,代码质量没有什么差别,结构化绑定的使用只关乎如何更好地表达一个思想。 ...
Read now
Unlock full access