QT第28节课程笔记 - 基类构造函数

Qt基础入门课程笔记 /QApplication抽象了QT的应用程序//QWidget抽象了窗口QWidget w;w.show();//进入消息循环,等待用户输入PS:Ctrl+Tab 切换文件目录Q_OBJECT 指当前类支持信号与槽的机制输出格式调整创建项目,项目右键添加新文件,选择Qt-Qt设计师界面类-Widget-类名:SmallWidget,完成;在smallWidget.ui中添加Spin Box和Horizon Slider控件;在主UI中添加widget控件; 阅读详情
AI摘要

文章讲述了C++中派生类如何通过构造函数的初始化列表调用基类构造函数进行初始化,强调了在继承体系中确保基类部分正确设置的重要性。举例说明了基类Vehicle和派生类Roadster的构造过程。

2.10.3 基类构造函数

在C++中,派生类可以通过其构造函数的初始化列表来调用基类的构造函数。这是在构造派生类对象时初始化基类部分的标准做法。

当创建派生类的对象时,基类的构造函数总是在派生类的构造函数之前被调用。如果没有明确指定,将调用基类的默认构造函数。如果基类没有默认构造函数,或者你需要调用一个特定的基类构造函数,就需要在派生类构造函数的初始化列表中明确指定。

示例

假设我们有一个基类 Base 和一个派生自 Base 的类 Derived:

class Base {
public:
    int data;
    
    Base(int x) {
        std::cout << "Base constructor with x = " << x << std::endl;
    }
};

class Derived : public Base {
public:
    double ydata;
    Derived(int x, double y) : Base(x) {  // 调用 Base 类的构造函数
        std::cout << "Derived constructor with y = " << y << std::endl;
    }
};

int main() {
    Derived obj(10, 3.14);  // 首先调用 Base(10),然后调用 Derived 的构造函数
    return 0;
}

在这个例子中:

  • Base 类有一个接受一个整数参数的构造函数。
  • Derived 类继承自 Base,它的构造函数接受一个整数和一个双精度浮点数。在其初始化列表中,它调用 Base 类的构造函数,并传递整数参数。
  • 当 Derived 类的对象被创建时,首先调用 Base 类的构造函数,然后调用 Derived 类的构造函数。

通过这种方式,派生类能够确保其基类部分被正确初始化。在继承层次结构中,这是非常重要的,特别是当基类需要一些特定的初始化操作时。

#include <iostream>
using namespace std;

//基类,父类
class Vehicle{ //交通工具,车,抽象的概念
public:
    string contry;
    double price;

    Vehicle(string contry, double price){
        cout << "基类的构造函数被调用" << endl;
        this->contry = contry;
        this->price = price;
    };

    void run(){
        cout << "车跑起来了" << endl;
    }
    void stop();
};


//派生类,子类
class Roadster : public Vehicle{ //跑车,也是抽象,比父类感觉上范围缩小了点
public:
    int stateOfTop;
    Roadster(string contry, double price, int state) : Vehicle(contry, price){
        cout << "派生类的构造函数被调用" << endl;
        stateOfTop = state;
    }

    void openTopped();
    void pdrifting();
};

int main()
{

    Roadster FTYPE("法国",70,0);
    return 0;
}

Qt|派生类中,其他类的对象如何初始化,其他类包括基类的基类和无关类 我的RFID程序中,Widget继承自QWidget,在Widget.h中,public定义了数据成员,QTableWidget  *cardtableWidget,在Widget.cpp的Widget构造函数中,初始化了QTableWidget  *cardtableWidget = new QTableWidget(10,3,this);        // 这个定义不是全局定义? 阅读详情

相关推荐

Qt部件基类QWidget

1.默认部件基类 QT提供的默认部件基类包括QMainWindow、QWidget、和QDialog这三种,这三个部件基类也是用的最多的。 QMainWindow是带有菜单栏、工具栏、状态栏的主窗口类,它有自己单独的布局。布局有一个中心区域,通常是标准的Qt部件,也可以是定制部件,且必须有一个中心小部件。setCentralWidget()方法可设置中心部件。 QWidget类是所有部件对象的基类,被称为基础窗口部件,继承关系详看QWidget类关系图。QWidget提供自我绘制和处理用户输入

骆驼胡杨的博客 1446

C++中基类与派生类的构造函数和析构函数

1.Cpp中的基类与派生类的构造函数 基类的成员函数可以被继承,可以通过派生类的对象访问,但这仅仅指的是普通的成员函数,类的构造函数不能被继承。构造函数不能被继承是有道理的,因为即使继承了,它的名字和派生类的名字也不一样,不能成为派生类的构造函数,当然更不能成为普通的成员函数。 在设计派生类时,对继承过来的成员变量的初始化工作也要由派生类的构造函数完成,但是大部分基类都有private属性的成员...

CurryCoder的个人博客 2022

QT第23节课程笔记 - 析构函数

析构函数是C++中的一个特殊的成员函数,它在对象生命周期结束时被自动调用,用于执行对象销毁前的清理工作。析构函数特别重要,尤其是在涉及动态分配的资源(如内存、文件句柄、网络连接等)的情况下。基本特性名称:析构函数的名称由波浪号()后跟类名构成,如~MyClass()。无返回值和参数:析构函数不接受任何参数,也不返回任何值。自动调用:当对象的生命周期结束时(例如,一个局部对象的作用域结束,或者使用delete删除一个动态分配的对象),析构函数会被自动调用。不可重载:每个类只能有一个析构函数。

chenlichenforlinux21的博客 1240

C++——基类构造函数

当创建派生类的对象时,基类的构造函数总是在派生类的构造函数之前被调用。如果没有明确指定,将调用基类的默认构造函数。如果基类没有默认构造函数,或者你需要调用一个特定的基类构造函数,当 Derived 类的对象被创建时,首先调用 Base 类的构造函数,然后调用 Derived 类的构造函数。在C++中,派生类可以通过其构造函数的初始化列表来调用基类的构造函数。Derived 类继承自 Base ,它的构造函数接受一个整数和一个双精度浮点数。它调用 Base 类的构造函数,并传递整数参数。

qq_47944751的博客 783

C++(11):继承基类的构造函数

C++(11):继承基类的构造函数。

风静如云的博客 2705

Innovus Function ECO实战:5步搞定数字后端设计中的网表修正(含Calibre LVS验证技巧)

本文提供了一份完整的Innovus Function ECO实战指南,详细解析了数字后端设计中网表修正的五步流程。从理解Function ECO概念、准备关键文件,到在Innovus中执行逻辑比对、自动布线及GUI检查,并重点攻克了ECO后Calibre LVS验证的难点与调试技巧,帮助工程师高效、精准地完成流片前的设计微调。

day7的博客 950

【c++类的构造函数】几种写法及问题

【c++类的构造函数】几种写法及问题 一、构造函数的定义 类通过一个或几个特殊的与类同名的成员函数来控制其对象的初始化过程,这些函数叫构造函数。构造函数的任务是初始化类对象的数据成员,无论何时只要类的对象被创建,就会执行构造函数。 该函数无返回类型(是 “ 无 ” 而不是 “ 空 ” (void))。但是该函数有返回值(这个类的对象)。并且一个对象也只能在被创建的时候调用构造函数,即一个对象只能调用一次构造函数。 (构造函数就相当于一个人的出生,析构函数就是一个人的终结。) 特别的,一个类可以有多个构造函数

leiyulu的博客 1万+

双有源桥(DAB)进阶:EPS调制策略与Matlab/Simulink仿真实践

本文深入探讨了双有源桥(DAB)的扩展移相(EPS)调制策略及其在Matlab/Simulink中的仿真实践。通过分析EPS的两种黄金调制策略——回流功率消除和电流应力优化,结合实际工程案例,展示了如何提升DAB系统的效率和性能。文章还详细介绍了Simulink模型搭建要点和关键仿真结果,为工程师提供了实用的技术参考。

weixin_33734785的博客 484

C#基础 构造函数(方法)

一、定义类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace oop { class Student // 默认internal族类(项目内), 改为public后其它命名空间可引用并使...

Peter的博客 2406

【NLP】使用 PyTorch 从头构建自己的大型语言模型 (LLM)

如果我们在 n 维空间中绘制一个向量,看起来相似的物体(如狗和猫)将彼此靠近,而看起来不相似的物体(如学校和家庭)的嵌入向量将位于更远的地方。为此,我们将使用一种流行的标记器,称为 BPE 标记器,这是一种子词标记器,正在 GPT3 等模型中使用。:前馈网络使用深度神经网络来学习两个线性层(第一层有 d_model 节点,第二层有 d_ff 节点,根据注意力论文分配值)中嵌入向量的所有特征,并且将 ReLU 激活函数应用于第一线性层的输出,为嵌入值提供非线性,并应用 dropout 以进一步避免过度拟合。

sikh_0529的博客 1952

PCRNet: Point Cloud Registration Network using PointNet Encoding

PCRNet算是在ModelNet40这种object-centric数据集上用deep-learning做配准最好入手的一篇文章了,整体架构涉及简洁明了,一句话描述就是简单粗暴,话不多说,直接上网络架构图: Work Flow: 首先对输入source (N×3N \times 3N×3)与template (M×3M \times 3M×3)进行PointNet操作,即MLP + max-pooling后,分别得到描述各自点云的维度为1024的global feature vector:Φ(PS).

dloading7的博客 1648

Qt继承系统控件为何要显示调用基类

在Qt中继承系统控件(如QWidget、QPushButton等)时,显式调用基类构造函数是C++继承和Qt框架特性共同作用的结果。parent综上所述,在Qt中继承系统控件时,显式调用基类构造函数是确保控件正确初始化、设置父子关系、管理内存、传递事件和处理信号的关键步骤。这是C++继承和Qt框架特性共同作用的结果,也是遵循Qt编程规范的最佳实践。

浩瀚之水的专栏 1141

国内外主流嵌入式GUI汇总

随着MCU资源增多,处理能力也强了,同时市场需求也增多了GUI功能也越来越丰富了,很多的嵌入式图形库都可以做出绚丽的界面。

m0_69914734的博客 3292

Qt构造函数的初始化问题

参考链接 QT中用父类构造函数初始化子类的成员变量 Qt ------ 初始化构造函数参数,parent C++ 构造函数和析构函数是否可以继承? 描述 在Qt新建继承Qt类的类后,经常会在构造函数看到parent的参数的初始化。如: DialogRangeReference.h class DialogRangeReference : public QDialog { Q_OBJECT public: explicit DialogRangeReference(QWidget *p

ZefinNg的博客 9602

华大HC32F460 TCP Server实验

华大HC32F460 TCP Server实验

ZhuoWuKeJi的博客 1272

人工智能大模型原理与应用实战:AI模型转换为API的步骤和方法

传统的开发模式下,构建复杂的软件系统是非常费时费力的,而通过云计算、微服务等技术手段可以实现快速部署、弹性扩展的能力。在这种背景下,越来越多的公司将重点转移到研发人员的产品思维上,希望能够将自己的AI模型转换为一个可供他人调用的API接口。但是对于许多从事AI领域的研发人员来说,如何将自己的AI模型转换为API是一个比较棘手的问题。在这篇文章中,作者将从AI模型转换为API的过程分为以下几个步骤:AI模型准备阶段——模型选择、数据准备、模型训练。

AI天才研究院 2601

QT第18-22节课程笔记 - 构造函数 - 拷贝构造函数完整笔记

类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。构造,那构造的是什么呢?构造成员变量的初始化值,内存空间等构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。// 使用std命名空间public:// 不需要使用std::stringint year;// 无参构造函数Car() {brand = "未知";year = 0;cout << "无参构造函数被调用" << endl;

chenlichenforlinux21的博客 2208

【推荐100个unity插件】基于关节物理控制的自行车、电动车、摩托车模拟解决方案——Simple Bicycle Physics

摘要 "简易自行车物理"是Unity的自行车模拟资源包,支持Animation Rigging,实现基于关节物理的自行车控制。兼容所有平台和渲染管线,包含预制体、材质、脚本等资源。核心脚本Bicycle Controller管理自行车物理属性,支持自定义角色设置和移动端控制。安装后,用户可快速配置骑行场景,调整转向、速度、重心等参数,并支持地面贴合、兔跳等功能。适用于开发各类自行车模拟游戏和应用。 (字数:149)

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1366

QT-学习-构造函数理解

源自:https://www.cnblogs.com/god-of-death/p/7777692.html MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } 1、QMainWindow 是 MainWindow 的父类 2、...

程序猿进化梯 2979

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

派生类与基类的有参构造函数

1.派生类构造函数要对本类中新增成员进行初始化,对基类继承的成员,自动调用基类构造函数进行初始化。 2.当基类声明有带形参的构造函数时,派生类也应声明带形参的构造函数,并将参数传递给基类构造函数。参数传递必须放在初始化列表中。 3.当基类中声明有默认形式的构造函数,派生类构造函数可以不向基类构造函数传递参数。 •重点: 1、派生类有参构造函数:用初始化列表为基类传递参数; 2、派生类内部...

人面桃花 2825

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

qt三种基类

qt三种基类QMainWindow:QWidgetQDialog QMainWindow: QMainWindow类提供一个带有菜单条,工具条和一个状态条的主应用程序窗口。主窗口通常提供一个大的中央窗口部件,以及周围菜单,工具条,和一个状态栏。QMainWindow窗口经常被继承,使得封装中央部件,菜单,工具条,状态栏等都变得很容易,当用户点击它的时候,相应的槽就会被调用。 QWidget QWidet类是所有用户界面对象的基类,窗口部件是用户界面的一个基本单元,它从窗口系统接收鼠标,键盘和其他消息,并在屏

qq_40577984的博客 1508

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

QT第29-31课程笔记-基类构造/虚函数/虚继承解决菱形继承

虚继承是C++中一种特殊的继承方式,主要用来解决多重继承中的菱形继承问题。在菱形继承结构中,一个类继承自两个具有共同基类的类时,会导致共同基类的成员在派生类中存在两份拷贝,这不仅会导致资源浪费,还可能引起数据不一致的问题。多重继承增加了语言的灵活性,但同时也引入了额外的复杂性,特别是当多个基类具有相同的成员时。在多重继承中,派生类继承了所有基类的特性。如果不同的基类有相同名称的成员,则必须明确指出所引用的是哪个基类的成员。在继承层次结构中,这是非常重要的,特别是当基类需要一些特定的初始化操作时。

chenlichenforlinux21的博客 2063

QT部件基类——QWidget与QDialog

parent即父窗口,默认为0,即没有父窗口,是顶级窗口,如果指定parent值则当前窗体将会是一个子部件。Qt::WindowFlags是Qt::WindowType枚举值的组合,用来设置窗口的属性,f = 0表默认为Qt::Widget风格,其余窗口属性详见下表。也就是说若一些部件拉伸因子大于0,而一些部件拉伸因子为0,则只有拉伸因子大于0的部件会被拉伸,而拉伸因子为0的部件不会被拉伸。QWidget构造函数的默认值,如果新的窗口部件没有父窗口部件,则它是一个独立的窗口,否则就是一个子窗口部件。

qq_54169998的博客 6120

Qt学习之路【2】:调用父类构造函数

阅读Qt代码的时候经常遇见这样一类代码: QPlayer::QPlayer(QWidget *parent) :QMainWindow(parent)QPlayer是一个类,“::”后面跟着的是一个构造函数。但是这个构造函数之后的“:”后面的QMainWindow(parent)该怎样去理解呢? 我们都知道在C++中,如果两个类A与B之间是继承关系,则A与B之间可以用“:”连接,但是类是没有参

喜欢哲学的女孩 3789

从Qt谈到C++(二):继承时的含参基类与初始化列表

提出疑问 当我们新建一个Qt的图形工程时,你有没有对如下代码感到好奇?MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) 派生类继承的基类不同以往,竟然是带有参数的,那么这个怎么理解呢?

果冻虾仁 4785

Qt重写默认构造函数

QT中默认的构造函数定义如下: #include "NetServerThread.h" class Network : public QObject { Q_OBJECT public: Network(QObject *parent = 0); //因为QObject *parent为默认参数已经赋值,所以此构造

在代码身上,用心去飞翔 5420
上一篇: QT第27节课程笔记 - 权限对继承的影响
下一篇: QT第29-31课程笔记-基类构造/虚函数/虚继承解决菱形继承
上官可编程
博客等级 码龄14年 1398粉丝 17原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上官可编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值