这句C++是什么意思?BaseWindow() : m_hwnd(NULL) { }.
What does this C++ statement mean? BaseWindow() : m_hwnd(NULL) { }
我正在浏览MSDN的"Windows API入门"部分,并遇到了C++我难以理解的一个方面。
我一直在看Stroustrup的"C++编程语言",找不到这个特别的东西。
请查看指向 MSDN 上相关页面的链接。
我不明白的台词是:
BaseWindow() : m_hwnd(NULL) { }
这一行在后面的代码片段中,描述了面向对象的主题方法。m_hwnd
属于HWND
型。
我真的不知道这里发生了什么。我很确定它是一个不做太多事情的构造函数,但这种特定的语法对我来说是陌生的。我必须承认,我的C++知识大多只是"添加了一些C++东西的C"。我目前正在深入研究Stroustrup来解决这个问题。
冒号只是构造函数声明和构造函数初始值设定项列表之间的语法分隔符。
这是一种直接构造(或初始化(成员变量的方法。
它类似于(但不等于(与
BaseWindow()
{
m_hwnd = NULL;
}
另一种看待它的方式:假设你定义了一个普通的局部变量,并希望将其初始化为一个特定的值。有几种方法可以做到这一点。
定义(使用默认初始化(和赋值:
HWND hwnd; hwnd = 0;
定义和副本初始化:
HWND hwnd = 0;
定义和直接初始化:
HWND hwnd(0);
使用构造函数初始值设定项列表,可以在构造函数中使用直接初始化,并且直接初始化发生在执行构造函数体之前。
请注意,模板不会在其中发挥任何作用。继承也是如此,即使可以使用构造函数初始值设定项列表"调用"父类构造函数。
最后,一个重要的注意事项:构造函数初始值设定项列表不应与std::initializer_list
混淆。
BaseWindow() : m_hwnd(NULL) { }
这声明了BaseWindow
的默认构造函数,该构造函数使用NULL
值初始化m_hwnd
。
但是,它不保证m_hwnd
将始终初始化为NULL
。 例如,默认复制构造函数不会这样做。 显式复制构造函数也不太可能这样做。
- 如果我std::dynamic_pointer_cast并且底层dynamic_cast的结果为null,那么返回的sh
- 如何在 c++ 中'NULL'字符串
- c++使用foreach使数组为null
- 当使用通配符和null指针调用函数时,对输出的说明
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 如何在映射中返回null
- 获取 SFML 窗口的 HWND 和高可用性?
- 为什么返回 NULL 不会破坏函数?
- 构造函数中的 QQuickItem 父项 null
- 如何获取边缘窗口句柄 (HWND)?
- 检查字符串是否"null" C++
- fopen 在 gdb 中返回 NULL
- what(): basic_string::_M_construct null not valid
- 在这个函数中是有缺陷的,因为取消引用 null 是无效的,所以我想更改代码
- 为什么在排序链表上的这种合并实现总是将两个列表都设置为 NULL,而只有一个应该设置一个列表?
- 为什么要从main()返回NULL?
- 为什么 nlohmann/json 序列化 "null" 而不是在 double 上"0"?
- 当目标指针不是基类的类型时,为什么允许dynamic_cast为多态类生成 null 指针?
- CEdit edit_box has hwnd null
- 初始化对话框后,子对话框的 hWnd 将重置为 NULL。