这里的第一行到底是做什么的?我无法理解作业右侧代码的语法 - 具体来说,[]()和 尾随(). 这看起来像是某种无名的内联函数调用?我以前从未见过这个。
HBRUSH hBrBlack = []() { return CreateSolidBrush(COLOR_BLACK); }();
Run Code Online (Sandbox Code Playgroud)
对于上下文,这是使用上面句柄的地方(问题是关于上面的代码):
HBRUSH MyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if (nCtlColor == CTLCOLOR_LISTBOX)
{
int id(pWnd->GetDlgCtrlID());
if (id == ID_LST_MTRS)
{
pDC->SetTextColor(COLOR_WHITE);
pDC->SetBkColor(COLOR_BLACK);
return hBrBlack;
}
}
// All the rest
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}
Run Code Online (Sandbox Code Playgroud)
[...](...){...}声明一个lambda 函数。然后尾随()立即调用该匿名函数。
这种模式通常称为IIFE(立即调用函数表达式)。如果我有一个需要多个步骤来构造/初始化的对象,但我希望该对象是const.
但是,在这种情况下,IIFE 似乎没有提供任何好处 - 您可以将其写为:
HBRUSH hBrBlack = CreateSolidBrush(COLOR_BLACK);
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |