一个简单的C++ MFC关于类的问题

// MainFrm.h : CMainFrame 类的接口
//

#pragma once

class CMainFrame : public CFrameWnd
{

protected: // 仅从序列化创建
CMainFrame();
DECLARE_DYNCREATE(CMainFrame)

// 特性
public:

// 操作
public:

// 重写
public:
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

// 实现
public:
virtual ~CMainFrame();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif

protected: // 控件条嵌入成员
CToolBar m_wndToolBar;

// 生成的消息映射函数
protected:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
DECLARE_MESSAGE_MAP()

int m_iWidth{ 800 };//客户区的宽
int m_iHeight{ 600 };//客户区的高

};
问题:
一般声明不都是 int a=3;这种语法吗,为什么下面这两句可以这样写,这是C++哪部分的知识?
int m_iWidth{ 800 };//客户区的宽
int m_iHeight{ 600 };//客户区的高

可能是定义了什么宏。这些写肯定是不符合语法的。