是否有使用默認初始值「一次性」拉姆達與使用普通的舊成員函數有什麼區別?使用的默認初始值拉姆達VS使用成員函數
struct A
{
int i;
int j = [&]
// something non-trivial,
// that requires multiple
// statements and depends
// on upper data members
{
int f = 0;
for (int k = 0; k < i; ++k) {
f += k;
}
return f;
}();
A(int k) : i(k) { ; }
};
對戰:
struct A
{
int i;
int J() const
{
int f = 0;
for (int k = 0; k < i; ++k) {
f += k;
}
return f;
}
int j = J();
A(int k) : i(k) { ; }
};
唯一我看到的是第二種方法的缺點:引入A
類的命名空間在這裏額外的符號J
。還有其他的區別嗎?
我個人使用的功能,並通過在您需要在成員初始化列表來計算的變量。否則,你依賴於人們永遠不要改變班級中變量的順序來保持它的工作。 – NathanOliver
您的lambda初始化示例不能編譯。 – vordhosbn
@vordhosbn:失蹤父母固定。 – Jarod42