C++语法问题,有点不太明白

 huineisuan111184 发布于 2022-11-04 08:54

各位大神,有个不太明白的C++语法 :

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{



}

这语法里面 函数参数后面 : QWidget(parent) 是什么意思呢 不太明白了?

9 个回答
  • 就是调用父类的构造函数。

    2022-11-07 12:38 回答
  • 构造函数初始化列表,第一列可以使用父类的构造函数。

    2022-11-07 12:39 回答
  • 调用父类的构造函数啊,这个看C++ Primer上面有写的

    2022-11-07 12:44 回答
  • 这是成员初始化列表(Member Initializer List),它的用途是当QWidget* parent这个参数传入Widget的构造函数时,Widget类里的QWidget成员将以parent初始化,即QWidget(parent)。
    使用成员初始化列表的好处是可以减少拷贝,例:

      //假使QWidget的类型为SomeWidget
     Widget::Widget(QWidget *parent) {
        //QWidget = parent;//Wrong!这是一个赋值行为
        QWidget = SomeWidget(parent);//Correct,但是QWidget被初始化了两次
      };
      

    这是因为C++规定,成员变量的初始化发生在进入构造函数之前,也就是QWidget这个成员
    会在进入构造函数前被初始化,在这里是默认构造函数初始化的。所以上面代码中QWidget被
    初始化了两次,外加 = 操作符(Assign Operator)被调用一次,这些操作开销是比使用成员
    初始化列表高的。所以一般而言都尽量使用成员初始化列表。即:

      Widget::Widget(QWidget *parent)
        : QWidget(parent)
      {
      }
      
      
    
    2022-11-07 12:44 回答
  • c++ 的基本语法,初始化列表。

    2022-11-07 12:45 回答
  • 初始化列表,在初始化列表中显示调用父类构造函数

    2022-11-07 12:48 回答
  • 类外定义构造函数和基类构造函数

    2022-11-07 12:51 回答
  • 这是在调用基类QWidget的构造函数,parent是传入基类构造函数的参数

    2022-11-07 12:58 回答
  • 基类构造函数的初始化。

    2022-11-07 13:01 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有