`
qimo601
  • 浏览: 3449220 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

C++ Qt 访问权限总结

    博客分类:
  • Qt
阅读更多

 

总结:C++的访问修饰符的作用是以类为单位,而不是以对象为单位。


通俗的讲,同类的对象间可以“互相访问”对方的数据成员,只不过访问途径不是直接访问.

步骤是:通过一个对象调用其public成员函数,此成员函数可以访问到自己的或者同类其他对象的public/private/protected数据成员和成员函数(类的所有对象共用),而且还需要指明是哪个对象的数据成员(调用函数的对象自己的成员不用指明,因为有this指针;其他对象的数据成员可以通过引用或指针间接指明)



 

C++中public,protected,private访问小结

1、private,public,protected方法的访问范围.(public继承下)

private: 只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问. 

protected: 可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问 

public: 可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问

注:友元函数包括两种:设为友元的全局函数,设为友元类中的成员函数


2、类的继承后方法属性变化: 

使用private继承,父类的所有方法在子类中变为private; 

使用protected继承,父类的protected和public方法在子类中变为protected,private方法不变; 

使用public继承,父类中的方法属性不发生改变; 

 


public: protected: private:
public继承 public protected ---
protected继承 protected protected ---
private继承 private private ---

 

 

protected继承和private继承能降低访问权限


再次提到:可以提供访问行为的主语为“函数”。

类体内的访问没有访问限制一说,即private函数可以访问public/protected/private成员函数或数据成员,同理,protected函数,public函数也可以任意访问该类体中定义的成员

public继承下,基类中的public和protected成员继承为该子类的public和protected成员(成员函数或数据成员),然后访问仍然按类内的无限制访问

 

 

Qt信号槽的访问限制


 

1、关键字signals指出随后开始信号的声明,这里signals用的是复数形式而非单数,siganls没有public、private、protected等属性,这点不同于slots。另外,signals、slots关键字是QT自己定义的,不是C++中的关键字。


2、槽也是普通的C++函数,可以一样被调用,他唯一的特点就是 他们可以被信号连接。因为槽就是普通的成员函数,它们也和普通的成员函数一样有访问权限,一个槽的访问权限决定了哪些信号可以和它相连接,而信号就没有访问权限的概念。


一个public slots:区包含了任何信号都可以相连的槽。你生成了许多对象,它们互相并不知道,把它们的信号和槽连接起来,这样信息就可以正确地传递,并且就像一个铁路模型,把它打开然后让它跑起来。


一个protected slots:区包含了之后这个类和它的子类的信号才能连接的槽。这就是说这些槽只是类的实现的一部分,而不是它和外界的接口。


一个private slots:区包含了之后这个类本身的信号可以连接的槽。这就是说它和这个类是非常紧密的,甚至它的子类都没有获得连接权利这样的信任。

分享到:
评论

相关推荐

    c++ QT 屏蔽 系统按键 需要管理员权限

    本主题主要关注如何使用C++和QT库来实现这个功能,特别是如何处理需要管理员权限才能屏蔽的系统按键,如Ctrl+Alt+Delete。 首先,我们要明白,`Ctrl+Alt+Delete`键组合是Windows操作系统中的一个特殊组合,它触发了...

    Qt Android 读写文件权限与录制音频权限询问Demo

    内部存储权限用于访问应用私有的数据目录,而外部存储权限则允许访问公共的外部存储区域。在Qt中,可以使用QStandardPaths类来获取这些路径,并使用QFile进行读写操作。但在此之前,需要确保已获取相应的权限: 1. ...

    基于Qt框架使用C和C++开发的小型云盘源码.zip

    8. **权限管理**:考虑到云盘应用可能涉及用户数据的安全,项目可能实现了权限管理功能,比如身份验证、加密传输和访问控制,这可以通过Qt的SSL支持和自定义的业务逻辑来实现。 9. **多线程**:为了提高性能,文件...

    C++采取Qt+Mysql的方式实现的一个酒店后台管理系统源码.zip

    8. 数据安全和权限控制:考虑到酒店管理系统的敏感性,可能会涉及到用户认证、数据加密以及访问权限控制等安全措施。例如,只有经过身份验证的管理员才能访问和修改关键数据。 9. 版本控制:开发过程中,使用版本...

    QT(c++)下载网络图片至本地。

    总结来说,QT C++通过QNetworkAccessManager和QNetworkRequest类提供了一种方便的方式来下载网络资源,如图片,并将其保存到本地。在Android平台上,注意处理好相应的权限和异常,以确保程序的稳定性和用户体验。

    C++ QT实战项目基于C++实现的学生选课管理系统源码

    《C++ QT实战:学生选课管理系统源码解析》 在信息技术领域,C++与QT框架的结合常常被用于开发高效、用户友好的图形界面应用。本项目——“C++ QT实战项目基于C++实现的学生选课管理系统源码”,正是这样一个实例,...

    基于Qt的C++项目,实现了网盘的基础功能。.zip

    开发者可能使用了某种形式的权限系统,允许用户指定其他用户或特定的共享链接对文件的访问权限。这可能需要在数据库中记录文件与用户或链接的关联关系,以及相应的权限信息。 总的来说,这个毕业设计项目展示了C++...

    基于Qt和C++的网盘系统(Network disk system based on Qt and C++).zip

    在毕业设计中,可能需要设计数据库表结构,例如用户表(包含用户名、密码等)、文件表(包含文件ID、文件名、大小、创建时间等)和权限表(关联用户与文件的访问权限)。 3. **文件上传与下载**: 文件传输是网盘...

    C++ Qt 学生宿舍管理系统

    以下是一个详细的方案,分为数据库设计、Qt界面设计和功能实现三个部分。 (一)基于学生结构体数组的宿舍管理系统(30 分) 定义学生结构体类型的数组,静态初始化学生信息(不包括入住信息)。 宿舍信息可使用...

    qt c++ webQQ 源码

    总结来说,"qt c++ webQQ"项目涵盖了Qt库的多个关键部分,包括网络通信、JSON解析、UI设计和实现,以及可能的安全认证技术。这个项目对于学习和提升Qt C++开发能力,尤其是网络应用和GUI设计,具有很高的实践价值。...

    使用C++和QT编写的医院管理系统.zip

    5. 用户权限管理:设置不同角色(如医生、护士、管理员)的访问权限,保证系统的安全性和数据的完整性。 在实际开发过程中,还需要考虑系统的扩展性和维护性,遵循良好的编程规范,编写清晰的注释,合理组织代码...

    QT VS2017 权限管理用户管理,单独输入界面

    在权限管理方面,QT允许开发者自定义访问控制机制,这通常涉及到角色(Role)和权限(Permission)的概念。用户根据其角色被赋予不同的权限,如读取、写入或执行操作。开发者可以创建一个类来管理这些角色和权限,...

    一个使用C++和Qt框架制作的Windows操作系统下的Frp图形界面客户端。.zip

    该毕业设计项目是一个基于C++编程语言和Qt框架构建的Windows操作系统下的Frp(Fractal Proxy)图形界面客户端。Frp是一款高效的内网穿透工具,它允许用户在没有固定公网IP的情况下,通过服务器进行内网服务的访问。...

    课程设计 手机计费系统 C++ QT.zip

    6. 安全保障:确保数据的安全,防止非法访问和篡改,可能需要实现用户权限管理、数据加密等措施。 在实现过程中,开发者需要关注代码的可读性、可扩展性和性能优化。使用面向对象编程原则,合理划分类和对象,降低...

    Qt读取注册表中内容

    Qt作为一个跨平台的C++库,提供了方便的API来访问这些信息,包括读取、写入和修改注册表键值。本文将深入探讨如何使用Qt在C++程序中读取包含特殊字符如"\"的注册表项。 首先,我们需要导入Qt的`QRegistyKey`模块,...

    qt调用JAVA文件示例

    在QT开发Android应用程序时,有时候我们需要利用Java代码来执行Android平台特有的功能,比如访问系统服务、权限管理等。本文将详细讲解如何在QT项目中调用JAVA文件,以实现与Android原生系统的交互。 首先,我们...

    基于C++&Qt和MySQL的图书管理系统.zip

    《基于C++&Qt和MySQL的图书管理系统》 在当今信息化时代,图书管理系统的开发是提升图书馆工作效率的重要手段。本项目“基于C++&Qt和MySQL的图书管理系统”结合了强大的编程语言C++、图形用户界面库Qt以及关系型...

    C++基于QT完成的模拟文件系统源码.zip

    在本项目中,"C++基于QT完成的模拟文件系统源码.zip" 是一个使用C++编程语言,并结合了QT库来实现的模拟文件系统。QT是一个跨平台的应用程序开发框架,广泛用于创建图形用户界面(GUI)以及非GUI应用程序。通过QT库...

    基于Qt的C++项目,实现了网盘的基础功能,包括注册登录、好友系统、私聊群聊、文件操作、分享文件等.zip

    该标题提及的是一个基于Qt的C++编程项目,主要目的是实现一个网盘应用的基础功能。Qt是一个跨平台的C++图形用户界面应用程序开发框架,它提供了丰富的库和工具,使得开发者能够创建出高效且具有现代UI的桌面和移动...

Global site tag (gtag.js) - Google Analytics