1
5
它们不完全一样。两者都创建了未命名的类,但它们的相似性到此为止。 在C++中,创建一个闭包,可以通过引用来捕获本地变量。在Java中,您只需获得当前局部变量值的快照(这些变量必须是“final”)。
匿名内部类的目的是扩展另一个类或实现另一个临时接口。因此,匿名内部类可以在某种程度上模拟lambda表达式的工作,例如通过实现
|
2
5
Java匿名内部类可以引用
一个C++ lambda可以参考 数据(包括可变的)在封闭函数中,如果它嵌套在成员函数中,那么它可以对封闭类的数据执行相同的操作。对封闭范围的精确依赖程度由程序员声明,因此它是显式的而不是隐式的。
与C#lambdas相比,C#lambdas没有限制,所有依赖项都是隐式的。这使得它们成为这些特性中最不冗长的(也得益于它们具有最好的类型推断)。但在缺点方面,它们使所有关于线程的简单规则无效,即局部变量不一定是“在线程堆栈上”,因此在访问之前不需要锁定。 |
3
2
|
apetrai · 我应该如何假设算法使用哪种迭代器类别? 2 年前 |
ridiculous_fish · std::是否保证短路? 2 年前 |
Fabio · 在c中将指针赋给常数指针++ 2 年前 |
johnco3 · 初始化固定C数组成员结构 6 年前 |
mans · 为什么出现此错误:constexpr在此处无效 6 年前 |
juztcode · 在C++中尝试捕获-创建了多少个对象 6 年前 |
Steven Scott · 忽略元素的基于范围的for循环 6 年前 |