QT第27节课程笔记 - 权限对继承的影响

Qt Android开发环境搭建与跨平台应用实战 跨平台开发框架通过代码复用显著提升多端应用开发效率,其中Qt凭借其成熟的工具链和原生性能优势,在移动端开发领域占据重要地位。从技术实现层面看,Qt for Android通过JNI桥接和OpenGL ES渲染引擎,实现了C++/QML与Android原生API的无缝集成。开发过程中需要重点处理环境配置、ABI兼容性、平台特性适配等核心问题,例如正确配置NDK版本、优化AndroidManifest.xml声明、处理动态权限请求等典型场景。在工业控制、物联网等领域的实际项目中,Qt的跨平台能力可帮助团队节省7 阅读详情

2.10.2 权限对继承的影响

在C++中,访问控制符对继承的影响可以通过下表来清晰地展示。这个表格展示了不同类型的继承(public、protected、private)如何影响基类的不同类型成员(public、protected、private)在派生类中的访问级别。

基类成员类型public 继承protected 继承private 继承
publicpublicprotectedprivate
protectedprotectedprotectedprivate
private不可访问不可访问不可访问

解释:

  • public 继承:基类的 public 成员在派生类中仍然是 public 的,protected 成员仍然是 protected 的。基类的 private 成员在派生类中不可访问。
  • protected 继承:基类的 public 和 protected 成员在派生类中都变成 protected 的。基类的 private 成员在派生类中不可访问。
  • private 继承:基类的 public 和 protected 成员在派生类中都变成 private 的。基类的 private 成员在派生类中不可访问。

这个表格提供了一个快速参考,帮助理解在不同类型的继承中基类成员的访问级别是如何变化的。记住,无论继承类型如何,基类的 private 成员始终不可直接在派生类中访问。

访问权限回顾

访问权限类内部同一个类的对象派生类(子类)类外部
public✔️ 可访问✔️ 可访问✔️ 可访问✔️ 可访问
private✔️ 可访问❌ 不可访问❌ 不可访问❌ 不可访问
protected✔️ 可访问❌ 不可访问✔️ 可访问❌ 不可访问

课程上写的验证代码

#include <iostream>
using namespace std;

//基类,父类
class Vehicle{ //交通工具,车,抽象的概念
public:
    string type;
    string contry;
    string color;
    double price;
    int numOfWheel;
protected:
    int protectedData;
private:
    int privateData;

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

//私有继承测试
class TestClass : private Vehicle{
public:
    void tsetFunc(){
        price = 10; //基类的公有数据被私有继承后,在派生类中权限编程私有,只限在类内部使用
    }
};
//公有继承测试
class Truck : protected Vehicle{

public:
    void testFunc(){
        type = "数据测试"; //编程了公有权限
        protectedData = 10; //保持公有权限
        privateData = 10; //报错了,基类的私有成员,不管哪种方式的继承都是不可访问的。
    }
};

//公有继承,基类的公有权限和保护权限不变,私有成员不能访问
class Bickle : public Vehicle{

public:
    void testFunc(){
        protectedData = 10;
    }
};

//派生类,子类
class Roadster : public Vehicle{ //跑车,也是抽象,比父类感觉上范围缩小了点
public:
    int stateOfTop;

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

int main()
{
    TestClass test;
    test.price = 3.3; //报错了,基类的公有成员被私有继承后,降为私有权限

    Truck t;
    t.type = "测试"; //报错了,基类的公有成员被保护继承后,降为保护权限
    t.protectedData = 10; //从报错信息看出,保护继承造成基类的保护成员还是保持保护权限
    Roadster ftype;
    ftype.type = "捷豹Ftype";
    ftype.run();
    Bickle bike;
    bike.type = "死飞";
    bike.run();
    return 0;
}

别再到处搜了!Qt QCheckBox三态(选中/未选中/半选)的完整QSS样式配置,附高清图标资源 本文详细解析了Qt QCheckBox三态(选中/未选中/半选)的完整QSS样式配置方法,包括关键选择器`indeterminate`的使用、高清图标资源方案及实战避坑技巧。适用于权限管理、配置向导等场景,提供企业级项目增强方案,助力开发者快速实现完美的三态CheckBox效果。 阅读详情

相关推荐

Wireshark光标配置指南:解决Windows高DPI下的鼠标交互问题

Wireshark作为主流网络协议分析工具,其在Windows系统中的光标行为直接受DPI缩放、Qt渲染机制与系统UI策略共同影响。理解高DPI适配原理,可避免因光标卡顿、偏移或焦点丢失导致的分析效率下降;掌握注册表级HIGHDPIAWARE标记、QT环境变量控制及QSS样式注入等技术手段,能显著提升协议树悬停响应、双击过滤与右键追踪等核心交互体验。尤其在4K/2K多屏、远程桌面或AI辅助编程(如Cursor工具)混用场景下,正确配置光标不仅关乎显示清晰度,更决定键盘快捷键、自动化脚本及输入法兼容性的稳定性

weixin_30660027的博客 574

protected理解

protected关键字虽然子类可以调用,但是仅限于子类的成员函数可以调用基类protected修饰的成员函数或者成员变量,但是子类对象不能直接调用基类protected修饰的成员函数和成员变量。首先先把问题讲清楚。由此可见,自己在这里对protected关键字理解是错误的,protected在记忆中的只是理解为子类可调用,但是平时使用的比较少,至于如何调用则没有深究过,才会造成这样的错误。private继承的则基类中的public和protected修饰的成员变量或者成员函数都将变为private类型。

漫步者 804

Ubuntu 22.04 预配置 OVA:VMware 开箱即用开发环境

Ubuntu 是广泛采用的 Linux 发行版,其 LTS 版本(如 Ubuntu 22.04)因长期支持与生态成熟,成为企业开发、教学实验和自动化测试的首选基础平台。OVA 是 VMware 官方支持的标准化虚拟机分发格式,封装了硬件配置、系统状态与预设服务,相比 ISO 安装可规避磁盘分区、驱动冲突、网络配置等高频失败环节。该方案聚焦‘零认知负担’交付逻辑,通过最小化预装(Docker、VS Code、Git)、路径统一(/home/vmuser/project)、权限收敛(vmuser 默认加入 do

weixin_34117211的博客 362

Qt_介绍创建

Qt 1、什么是Qt ​ 图形用户界面应用程序开发框架、是对底层的应用程序编程接口进行面向对象的封装,是一套基于C++语言的类库。 ​ 专注但不局限于用户界面开发,也可以进行系统调用,网络通信,数据库,2D/3D 建模,图像处理,音视频处理。 ​ 特点:跨平台,支持linux,Windows,MacOS,IOS,Android系统 2、为什么选择Qt ​ 基于C++语言简单应用,优良的跨平台特性,现阶段在个人计算机,工控,嵌入式的界面占据主导地位。 3、环境与工具 ​ 工具: ​ Qt

Amo-wintercs的博客 455

VS2022企业级安装与配置实战指南:稳定性、合规性与性能调优

Visual Studio 2022作为微软首款64位原生IDE,已超越单纯版本迭代,成为工业级C++/C#开发的事实标准。其核心价值在于在C++20标准支持、MSVC v143编译器成熟度与企业IT策略兼容性之间实现黄金平衡——相比预览中的VS2025,VS2022对模块(Modules)、协程(Coroutines)等关键特性的落地更稳定,且规避了C++23新特性(如std::expected)支持不全的风险。技术选型本质是工程权衡:非追求最新,而是保障CI/CD流水线零误报、PLC上位机系统长期可维护

weixin_34038293的博客 360

OpenCR固件更新全链路解析:从ROS2兼容性到udev规则深度调试

OpenCR是TurtleBot3的核心控制主板,其固件更新并非简单烧录,而是涉及双区引导、RSA签名校验与USB CDC ACM通信的嵌入式安全流程。理解Bootloader如何验证`turtlebot3_core.elf`完整性、为何必须匹配ROS2 Humble环境,是解决‘静默失联’问题的关键。技术价值体现在实时性提升(延迟降低67%)、传感器精度优化及系统鲁棒性增强。典型应用场景包括Ubuntu 22.04/24.04下ROS2机器人启动失败、`/dev/ttyACM0`权限异常、`jump_to

weixin_30776545的博客 340

C++ Qt 访问权限总结

  总结:C++的访问修饰符的作用是以类为单位,而不是以对象为单位。 通俗的讲,同类的对象间可以“互相访问”对方的数据成员,只不过访问途径不是直接访问. 步骤是:通过一个对象调用其public成员函数,此成员函数可以访问到自己的或者同类其他对象的public/private/protected数据成员和成员函数(类的所有对象共用),而且还需要指明是哪个对象的数据成员(调用函数的对象自己的...

qimo601的专栏 444

Linux桌面Dock选型指南:原理、适配与十大工具实战

Linux Dock并非简单的任务栏美化组件,而是深度耦合X11/Wayland协议层、窗口管理器接口与桌面环境框架的系统级交互枢纽。其核心价值在于通过空间压缩提升工作流效率,解决高频应用快速切换、多屏任务分组、低配设备稳定运行等工程痛点。技术实现上涉及OpenGL/Vulkan渲染适配、D-Bus服务集成、_NET_WM_STRUT边缘锚定等底层机制,不同方案在Wayland支持、内存占用、Java GUI兼容性等方面存在显著差异。本文聚焦Linux桌面效能优化,结合Kali渗透测试、嵌入式开发、老硬件运

478

QT学习笔记3

派生类的成员也只能访问基类中的 oublic/protected 成员,而不能访问 private 成员;派生类的对象不能访问基类中的任何的成员。派生类的成员只能访问基类中的 oublic/protected 成员,而不能访问 private.成员;1. C++中的类是一种构造类型,与 C 语言的结构体相似,但是进行了一些扩展,类的成员不但可以是变量,还可以是函数;在同一个作用域内,声明几个功能类似以的同名函数,并且这些同名函数的参数个数、参数类型或者参数顺序不同,或者函数返回类型不同,那么就叫函数重载。

m0_59949484的博客 537

Halcon深度图转点云实战:从XYZ映射到3D可视化全解析

本文详细解析了如何使用Halcon将深度图转换为点云图,涵盖从XYZ映射到3D可视化的全流程。通过实战案例和代码示例,介绍了深度图预处理、xyz_to_object_model_3d核心转换及3D可视化技巧,适用于工业检测、三维重建等场景。

stem5的博客 766

光谱分布、光谱辐射通量密度与不同时间段分布光谱(图示)

1、光谱分布图 2 太阳辐射能量图 3、不同时间段的太阳分布光谱图 4、不同波长的光的能量分布主要区域 5、不同波段的使用场景

maopig的专栏 2万+

2020.8.3黑马QT学习笔记

一。事件 1.注意: (1)在事件名称上用F1没有效果,需要在QWidget上用 (2) 2.新建事件: (1)新建一个QWidget文件,命名为mylabel (2)将头文件的class mylabel :publi QWidget改为class mylabel :publi QLabel(因为所用到的控件label是继承于QLabel的) (3)将cpp文件中的QWidget(parent)改为QLabel(parent) (4)在头文件中新建protected声明,并在protected下声明事件。

chen9807的博客 1105

别再让PyCharm吃光你的C盘!保姆级教程:安全迁移config、plugins和remote sources到D盘

本文提供了一份详细的PyCharm配置与缓存文件迁移指南,帮助开发者将config、plugins和remote sources等占用大量C盘空间的文件安全转移到D盘。通过修改data.properties文件和正确迁移顺序,确保PyCharm功能不受影响,同时释放宝贵的系统盘空间。

weixin_28836989的博客 424

[C++]Qt日志与调试进阶:性能、自定义格式化与编译优

但在简单的使用场景下,输出一条普通信息的耗时也在微秒级别。不过和 QDebug 一样,如果在性能敏感的区域(如频繁调用的函数内部或者紧密的循环中)大量使用,并且日志输出的内容过多或者日志系统配置复杂,也可能会产生一定的性能开销。它的耗时通常是比较短的,但具体耗时会受到多种因素的影响,如输出的内容长度、输出的目标(例如是输出到控制台还是文件)等。例如:a.cpp ,moc后,会生成moc_a.cpp, 所以在a.cpp文件的最后,添加#include"moc_a.cpp", 会提高编译速度。

qq_55948352的博客 520

CE 7.4中文版实战:如何用自动汇编功能快速生成游戏修改器(附CT表保存技巧)

本文详细介绍了CE 7.4中文版中自动汇编功能的使用方法,帮助用户快速生成游戏修改器。从环境配置、内存地址定位到自动汇编代码注入,再到CT表保存和独立EXE生成,提供全流程实战指南,适合逆向工程爱好者和游戏修改器开发者。

keras9composer的博客 357

【教程4>第4章>第22节】FFT频偏估计方法,导频+cordic频偏估计方法,costas环的性能对比

频偏范围适应性:Costas 环频偏锁定和基于 PN 导频和 CORDIC 算法的频偏估计都可以通过调整参数来适应一定范围的频偏,但 Costas 环的频率捕获范围相对较窄,而基于 PN 导频和 CORDIC 算法的频偏估计,基于 FFT 变换频偏估计对频偏范围较大。在高信噪比条件下,三种方法都可以获得较高的估计精度,但在低信噪比环境中,基于 PN 导频和 CORDIC 算法的频偏估计,基于 FFT 变换频偏估计这两个开环方案相对更具优势,而Costas 环频偏锁定的精度可能会受到较大影响.

FPGA/MATLAB学习教程/源码/项目合作开发 611

Qt开发入门:从零到跨平台GUI低手

Qt开发入门:从零到跨平台GUI低手

Yusei_0523的博客 653

Vue3 - H5实现省市区三四级联动组件,选择地址自定义省市区三级联动插件,弹框式多级联动选择器区域选择,vue3实现省市区三级联动地址选择组件(支持接口数据懒加载,样式精美漂亮,附带详细示例源码)

vue3实现省市区三级联动地址选择组件(附address文件),vue3实现省市区三级联动, 实现省、市、县地区三级联动功能,vue3省市区选择器,VUE3 h5如何实现省市区街道的四级联动选择,vue实现省市区选择联动,vue3城市三级联动(自定义组件)_VUE三级联动,插件省市区联动,vue如何实现省市区选择器,vue3怎样实现省市区地址三级联动,vue四级联动,vue3级联选择器,vue3实现选择省市区镇(街道)四级级联选择,包含三级级联选择,省市区街道三级四级联动选择器,VUE3自定义多列选择器省市

🏆 前端领域优质创作者 3070

Qt 新手入门教程_2高频英文术语详解

本文系统梳理了Qt开发中的高频英文术语,涵盖UI设计、代码实现和项目管理的核心概念。主要内容包括: UI设计器常见术语 objectName作为控件唯一标识符,用于代码访问和样式表选择 基础属性:text(显示文字)、enabled(交互状态)、visible(可见性) 布局相关:geometry(位置尺寸)、size系列(尺寸限制)、tooltip(悬浮提示) QSS样式表关键术语 颜色控制:background系列(背景)、color(文字颜色) 边框样式:border简写属性及线型(solid/das

zhanghaha1314的博客 784

YOLOv11 结合多尺度卷积注意力机制(MSCA):小目标检测精度提升20%的完整实现指南

用不同尺寸的深度卷积(如d×7×1、d×1×7等)提取多尺度特征;通过通道融合,强化小目标的细节信息;仅增加4.2M参数,却能让小目标检测精度大幅提升(对比表见后文)。

m0_71589036的博客 186

我装了10个ClawHub技能,这些最好用!

ClawHub就是Clawdbot的"应用商店"。Clawdbot是手机ClawHub是App Store技能就是各种App装了技能,Clawdbot才能干更多事。这个技能解决了我的信息过载问题。为什么装我订阅了很多Newsletter。每天收到一堆长文章,根本看不完。怎么用“总结这篇文章的核心观点”“把这个Newsletter提炼成3个要点”“这篇技术博客有哪些可以实践的建议?安装命令真实体验现在我收到长文章,直接转发给Clawdbot。它会提炼出核心要点和行动清单。

Maynor的博客 6103

C++桥接模式实战:解耦抽象与实现,应对多维度变化

在面向对象设计中,当系统需要在多个独立维度上扩展时,传统的继承方式容易导致“类爆炸”,使代码难以维护。桥接模式作为一种结构型设计模式,其核心原理是将抽象部分与实现部分分离,使它们可以独立变化。该模式通过组合代替继承,将原本可能呈乘法级增长的类层次结构,转变为加法级扩展,显著提升了系统的灵活性和可维护性。其技术价值在于遵循“组合优于继承”和“开闭原则”,有效降低了类之间的耦合度。典型的应用场景包括跨平台UI开发、图形渲染引擎、数据存储与格式处理等需要处理多维度变化的领域。本文以C++中的图形渲染为例,深入剖析

weixin_33736048的博客 467

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

鸟哥私房菜笔记01-Linux是什么与如何学习

GPL(GNU General Public License,GNU通用公共许可证)由斯托曼于1989年起草,是自由软件运动的核心法律工具。它的核心理念叫**“Copyleft”(著佐权)——与传统的"Copyright(版权)"相反,Copyleft 不是限制你使用软件,而是保证你和所有后续用户都拥有使用、修改、分发软件的自由**。版本发布时间主要应用GPLv11989年早期GNU软件GPLv21991年6月Linux内核GPLv32007年6月29日。

Virtue_Wei的博客 233

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C++ 知识补充

向量(vector)是一个封装了动态大小数组的顺序容器(SequenceContainer)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。C++中map提供的是一种键值对容器,里面的数据都是成对出现的,如下图:每一对中的第一个值称之为关键字(key),每个关键字只能在map中出现一次;第二个称之为该关键字的对应值。

weixin_47059239的博客 2131

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Debian 9初始服务器安全配置:三道防线构建可信基线

Linux服务器初始化配置是保障系统安全与稳定运行的首要技术环节,其核心在于建立可审计、可预测、可恢复的最小可信基线。该过程涉及用户权限模型(如有效用户ID与真实用户ID分离)、sudo机制原理(setuid位触发euid提升)、SSH密钥认证替代密码登录、以及ufw防火墙默认拒绝策略等基础但关键的技术原理。其技术价值在于规避常见故障(如sudo: 'apt': command not found、ssh connection reset by peer),支撑DevOps标准化部署与嵌入式设备(如Jets

weixin_30808693的博客 325

Ubuntu 18.04 下 Snap 应用打包与稳定交付实战

Snap 是一种面向 Linux 的通用应用打包与分发技术,其核心在于自包含运行时、强隔离沙盒及声明式契约模型。相比 deb 等传统包格式,Snap 通过 squashfs 镜像封装应用、依赖与指定版本解释器(如 Python 3.8),彻底规避老旧系统(如 Ubuntu 18.04)中 glibc 2.27、内核 4.15、禁止 apt 升级等导致的依赖冲突与环境不一致问题。该技术在工业控制、边缘计算和教育终端等长期服役场景中展现出高确定性部署、零摩擦安装(sudo snap install)、可审计回滚

weixin_30654583的博客 340
上一篇: QT第25-26节课程笔记 - 继承及分文件
下一篇: QT第28节课程笔记 - 基类构造函数
上官可编程
博客等级 码龄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、付费专栏及课程。

余额充值