zoukankan      html  css  js  c++  java
  • 每日接触概念不清知识点2018.9.4

    每日接触概念不清知识点2018.9.4

    Qt中的Qmenu的使用

    Qt中要建立菜单,有三个类很重要:

    1. QMenuBar(QWidget * parent = 0)  
    2. QMenu(QWidget * parent = 0)   
    3. QMenu(const QString & title, QWidget * parent = 0)  
    4. QAction(QObject * parent)   
    5. QAction(const QString & text, QObject * parent)   
    6. QAction(const QIcon & icon, const QString & text, QObject * parent)  

    QMenuBar:就是所有窗口的菜单栏,在此基础上添加不同的QMenu和QAction

    QMenu:菜单栏里面菜单,可以显示文本和图标,但是并不负责执行操作,有点类似label的作用

    QAction: Qt 将用户与界面进行交互的元素抽象为一种“动作”,使用QAction类表示。QAction才是真正负责执行操作的部件。

    关系型数据库

    在关系型数据库中数据以行和列的形式存储,以便于用户理解,这一系列的行和列被称为表,一组表便组成了数据库。在关系数据库中:各数据项之间用关系来组织,关系(relationship)是表之间的一种连接,通过关系,我们可以更灵活地表示和操纵数据;另外,用户可以非常方便的用查询(Query)来检索数据库中的数据,一个Query是一个用于指定数据库中行和列的SELECT语句。

          关系型数据库通常包含下列组件:客户端应用程序(Client)、数据库服务器(Server)、数据库(Database)。

          关系数据库是支持关系模型的数据库系统。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。关系模型由关系数据结构、关系操作集合和完整性约束三部分组成。关系操作分为关系代数、关系演算、具有关系代数和关系演算双重特点的语言(SQL语言)。完整性约束提供了丰富的完整性:实体完整性、参照完整性和用户定义的完整性。

     

    链接属性

    链接属性分为:外连接、内链接、无链接;

    1.外连接:外部链接属性,也就是可以在整个程序范围内进行链接,譬如函数和全局变量;

    2.内链接:内部链接属性,也就是只可以在当前C文件内部进行链接,不能在当前C文件外的文件中进行访问、链接,如static修饰的函数、全局变量属于内部链接,因此可知static关键子的一个用法就是改变变量或者函数的链接属性为内部链接,只能使得被修饰的变量只能在当前文件中被使用;

    3.无链接:这个符号本身不参与链接,所有的局部变量(无论是auto、static修饰)都是无链接的;

    4.由于函数和全局变量的链接属性为外链接,则函数名和全局变量名会存在同名冲突

    高级语言解决重名冲突的做法为:命名空间(namespace),指定使用的变量名是存在于哪个命名空间的变量;

    C语言中解决重名冲突的做法为:改变变量的链接属性,将不会在其他文件中使用的函数或者全局变量使用static修饰,使其链接属性为内部链接。

    C++静态数据成员和静态成员函数

    静态数据成员

    1.为什么我们需要使用静态数据成员?

      我们知道每一个对象都有自己独有的数据成员的值,那怎么去实现不同对象之间可以去共享数据呢?于是就有了两种的方法:一个是全局变量,但是由于全局变量也可以被成员函数调用进而修改它,所以这样很不安全,故这种方法不可行;第二种就是静态数据成员了,可以实现数据共享,该类的所有对象都共享这块静态存储空间。

      定义静态数据成员,它不专属于某一个对象,它的生命周期与整个程序的生命周期相同,因此即使某个对象消亡了,静态数据成员还是存在的,值没有改变。

    2.声明静态数据成员的格式:

    static 数据类型 成员名;

    (同样受访问控制符的作用)

    3.静态数据成员只能在类外初始化,不能再构造函数中初始化,原因有二:

    First:静态数据成员不专属于某一个对象,而是所有对象共享的,所以如果在构造函数中初始化,就会使每定义一个对象的时候都会初始化一遍静态数据成员,显然与我们的目的有冲突。

    Second:静态存储区应在程序运行之前分配,而如果在构造函数中定义的话,就只能在创建对象的时候才会调用到构造函数,去初始化静态数据成员,所以我们应该把它定义在类外,目的就是为了在程序运行前对其进行分配空间。

    4.静态数据成员可以用类名去访问,当然的毫无疑问的也可以用对象名去访问。

    5.普通的成员函数也可以访问静态数据成员。  //但是静态成员函数不能直接访问普通数据成员

    ②静态成员函数

    1.为什么我们需要使用静态成员函数?

    为了能够更加方便的访问静态数据成员,C++定义了一种特殊的成员函数来专门负责对静态数据成员的存取。

    同样静态成员函数也不是专属于哪一个对象的,是每个对象都共享的。

    2.声明静态成员函数的格式:

    static 返回值类型  函数名(参数表);

    3.静态成员函数与普通成员函数的区别:

    First:静态成员函数没有this指针,因为它不是某一个对象私有的,而是所有对象共享的,是专门用来处理静态数据成员的,所以在访问数据成员的时候不需要告诉系统这个访问的数据成员究竟是属于哪一个对象的,故在静态成员函数中是没有this指针的。

    ——》这个也就导致了一个问题,静态成员函数不能直接去访问非静态数据成员,因为没有this指针,没有办法去告诉编译器这个数据成员究竟是哪一个对象的。

    但是,我们可以通过参数的方式间接去调用非静态的数据成员

    eg.  static int GetDate(Date someday)

            {     

                         return someday.day+comday;  //假设comday是定义的静态数据成员

             }

    从这个代码中可以看到提供一个对象作为参数就可以访问非静态数据成员了,因为这时候通过“.”作用域限制符就可以告诉编译器这个数据成员是哪一个对象的

    Second:静态成员函数可以通过类名去访问,当然也可以通过对象名去访问;但是普通成员函数只能通过类名去访问。

    4.静态成员函数可以通过类名去访问,当然也可以通过对象名去访问

  • 相关阅读:
    mySQL部分疑问和小结(orale)
    Java技术中的三大特性
    Java调用DB的存储过程
    Android Http异步请求,Callback
    android Handler的使用(一)
    Android之ContextMenu的使用方法以及与OptionMenu的区别(转)
    git 把文件从 版本管理中移除 andorid版本
    在GIT 中增加忽略文件夹与文件
    玩转Android---组件篇---Intent(意图)
    Android Activity和Intent机制学习笔记
  • 原文地址:https://www.cnblogs.com/gzk1171848896/p/9583272.html
Copyright © 2011-2022 走看看