显式构造函数及其具有(默认?)值的定义
explicit constructors and their definition with (default?) values
可能的重复项:
构造函数中这种奇怪的冒号成员语法是什么?
我需要快速回答以下问题。它是关于一个C++类(一个 QT 派生类,但我认为这在这里并不重要)。
在头文件中,我有以下声明:
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
而在源文件中,我有以下定义:
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
QWidget * central = new QWidget(this);
这个问题,也许清楚地表明了我在C++方面的菜鸟,它是:
构造函数定义中的: QMainWindow(parent)
是什么意思?是某种默认初始化吗?这是否与构造函数是显式的事实有关(我掌握了这是什么意思,但没有详细的)?
拜托,我知道这个问题可能很简单,我只是不知道从哪里开始。
谢谢。
编辑:感谢所有回答的人。
它从基类调用该特定构造函数。
它与构造函数explicit
无关。在这种情况下,显式意味着不能将QWidget*
隐式转换为MainWindow
对象。
:QMainWindow(parent)
只是说,应该调用以QWidget*
作为参数的基类构造函数来构造对象。
相关文章:
- C++(和 ROS) - 包含与前向声明引用,设置默认值和类型定义
- 没有默认构造函数作为模板参数的自定义比较器
- 在 C++ 中声明 const 对象需要用户定义的默认构造函数.如果我有一个可变成员变量,为什么不呢?
- 如何定义 Vector2f 的默认参数?[SFML]
- 用户定义的结构是否有默认C++比较器?
- 为什么为派生类定义复制构造函数需要定义基类的默认构造函数?
- 构造函数中定义的类函数的默认参数
- 注意:"Entity_c::Entity_c(const Entity_c&)"被隐式删除,因为默认定义格式不正确:
- 具有外部定义的默认特殊成员函数
- boost::p rogram_options 自定义验证和默认值
- 被隐式删除,因为默认定义格式不正确:
- MSVC 编译器实例化函数模板的默认定义,即使存在专用化
- 对于默认定义的移动构造函数,noexcept的规则是什么
- C++构造函数被隐式删除,因为默认定义的格式不正确
- 错误:隐式删除,因为默认定义格式不正确(结构向量)
- 默认定义声明的详细程度不完整
- 如何在不传递参数的情况下,将默认定义了参数的函数作为参数传递?C++
- Pair(const std::p air<_T1, _T2>&) 被隐式删除,因为默认定义格式不正确 错误:分配unique_ptr映射时
- SFML C++联合构造函数被隐式删除,因为默认定义格式不正确
- 复制构造函数被隐式删除,因为默认定义的格式不正确