ECMAScript 对象
1. 数组所谓数组,就是将多个元素(通常是同一类型)按一定顺序排列放到一个集合中,那么这个集合我们就称之为数组。
数组是一个有序的列表,可以在数组中存放任意的数据,并且数组的长度可以动态的调整。
通过数组字面量创建数组
1234567891011// 创建一个空数组var arr1 = []; // 创建一个包含3个数值的数组,多个数组项以逗号隔开var arr2 = [1, 3, 4]; // 创建一个包含2个字符串的数组var arr3 = ['a', 'c']; // 可以通过数组的length属性获取数组的长度console.log(arr3.length);// 可以设置length属性改变数组中元素的个数arr3.length = 0;
1.1 获取数组元素数组的取值
123456// 格式:数组名[下标] 下标又称索引// 功能:获取数组对应下标的那个值,如果下标不存在,则返回undefined。var arr = ['red', 'green', 'blue'];arr ...
ECMAScript 操作符和流程控制、函数
1. 运算符1.1 算术运算符Javascript中支持的算术运算符有五种,分别为:
+:加号
-:减号
*:乘号
/:除号
%:取余
1.2 一元运算符一元运算符:只有一个操作数的运算符。
前置 ++ / - -
前置++:先加1,后参与运算
前置- - :先减1,后参与运算
后置 ++ / - -
后置++:先参与运算,后加1
后置- - :先参与运算,后减1
12345var iNum1 = 10;var iNum2 = 20;var iNum3 = --iNum1 + --iNum2; // 9 + 19 等于 28var iNum4 = iNum1-- + iNum2--; // 9 + 19 等于 28var iNum5 = iNum1 + iNum2; // 8 + 18 等于 26
1.3 逻辑运算符逻辑运算符又叫布尔运算符,逻辑运算符参与的表达式返回一个布尔类型的值。Javascript中的逻辑运算符和C/C++中的逻辑运算符是一样的。
&&:逻辑与,两个操作数同时为true,结果为true,否则为false
| ...
ECMAScript 变量、数据类型
1. JavaScript 概述JavaScript是一种运行在客户端 的脚本语言(不需要编译,直接执行)。JavaScript的解释器被称为JavaScript引擎,为浏览器的一部分,是广泛用于客户端的脚本语言,它一般是在HTML网页上使用,用来给HTML网页增加动态功能。
JavaScript和HTML、CSS的区别
HTML:提供网页的结构,提供网页中的内容
CSS: 用来美化网页
JavaScript: 可以用来控制网页内容,给网页增加动态的效果
JavaScript 分三个部分
ECMAScript
JavaScript的核心,描述了语言的基本语法和数据类型,ECMAScript是一套标准,定义了一种语言的标准与语法规范。
DOM---Document Object Model 文档对象模型
一套操作页面元素的API,DOM可以把HTML看做是文档树,通过DOM提供的API可以对树上的节点进行操作。
BOM---Browser Object Model 浏览器对象模型
一套操作浏览器功能的API,通过BOM可以操作浏览器窗口,比如:弹出框、控制浏览器 ...
Qt Quick 和 QML
很多人不了解Qt Quick和Qml,还有很多人对其存在偏见。这篇文章就是来向这些有困惑的人介绍一下其是什么,有什么特点。
首先,这两个是一个东西吗?答案:是的。但是,具体来说,Qt Quick是框架,qml是语言。Qt Quick是用C++搭建起来的一套DirectUI/Immediate UI框架,在这个框架上可以用和js语法一样的qml语言开发界面。
和原来的QWidgets框架有什么关系吗?答案是没有。这个估计让很多人失望,我一开始也是以为Qt Quick就是QWidgets的演进版,只不过用js替代了原有的ui.xml文件。实际上,Qt Quick是一个新框架,它仅仅继承了QT原有的元对象系统,也就带信号槽的对象系统,其他的理念都是新的。了解DirectUI的同学肯定知道DirectUI和经典的GUI库,如MFC、WTL的区别。DirectUI把所有控件都在一个主窗口的绘制事件里绘制,从硬件原理上说就是界面是统一刷新的,而不是根据事件选择部分区域刷新。这样的好处是这些控件容易协作变化,特别适合制作动态界面,例如控件拖拽、变形、变色、皮肤、透明、3D等等。
为什么要引入qml或 ...
jsoncpp的编译和使用
在前面的文章中为大家介绍了C语言中如何使用cjson处理json数据,接下来讲一下json在C++中的处理,这里给大家介绍一个开源的库jsoncpp。
1. 下载和编译1.1 下载下载 jsoncppJsoncpp是个跨平台的C++开源库,提供的类为我们提供了很便捷的操作,而且使用的人也很多。在使用之前我们首先要从github仓库下载源码,地址如下:
1https://github.com/open-source-parsers/jsoncpp
下载 cmake 工具由于C++程序猿都是基于VS进行项目开发,下载的源码我们一般不会直接使用,而且将其编译成相应的库文件(动态库或者静态库),这样不论是从使用或者部署的角度来说,操作起来都会更方便一些。
但是,从github下载的源码不能直接通过VS打开,编译就更谈不上了。它提供的默认编译方式是cmake。我们可以通过使用cmake工具将下载的jsoncpp源码生成一个VS项目,这样就可以通过VS编译出需要的库文件了。
CMake工具的官方下载地址如下:
1https://cmake.org/download/
在这最新的安装包,根据向 ...
Qt数据库操作
1. 概述Qt框架中对数据库操作提供了很好的支持,我们可以通过Qt提供的类非常方便地和本地或者远程数据库进行连接。众所周知,数据库是 C-S(client-server)结构的,我们要连接的数据库属于服务器端,通过Qt编写的应用程序属于客户端。
如果想用通过Qt访问数据库,首先我们需要在项目中添加数据库模块,模块名为sql 。找到项目文件xxx.pro,把模块名加进去:
1QT += core gui sql
这个sql模块其实对应的就是一个动态库,动态库中有数据库相关类的二进制源码,在使用动态库中的数据库类的时候,动态库被加载到内存,根据程序猿的需求来提供相应的服务。
首先来介绍一下Qt为我们提供的常用的数据库类:
QSqlDatabase :通过这个类添加/删除/复制/关闭数据库实例
QSqlQuery :数据库查询类
QSqlRecord :数据库记录(通常是数据库中表或视图中的一行)的功能和特征。
QSqlField :数据库表或视图中单个列的特征,例如数据类型和列名。
QSqlQueryModel :执行SQL语句和遍历结果集的高级接口。它构建在底层QSqlQuery之上 ...
非受限联合体
配套视频课程已更新完毕,大家可通过以下两种方式观看视频讲解:
关注公众号:爱编程的大丙,或者进入大丙课堂学习。
1. 什么是非受限联合体联合体又叫共用体,我将其称之为union,它的使用方式和结构体类似,程序猿可以在联合体内部定义多种不同类型的数据成员,但是这些数据会共享同一块内存空间(也就是如果对多个数据成员同时赋值会发生数据的覆盖)。在某些特定的场景下,通过这种特殊的数据结构我们就可以实现内存的复用,从而达到节省内存空间的目的。
在C++11之前我们使用的联合体是有局限性的,主要有以下三点:
不允许联合体拥有非POD类型的成员
不允许联合体拥有静态成员
不允许联合体拥有引用类型的成员
在新的C++11标准中,取消了关于联合体对于数据成员类型的限定,规定任何非引用类型都可以成为联合体的数据成员,这样的联合体称之为非受限联合体(Unrestricted Union)
2. 非受限联合体的使用2.1 静态类型的成员对于非受限联合体来说,静态成员有两种分别是静态成员变量和静态成员函数,我们来看一下下面的代码:
12345678910111213141516171819 ...
强类型枚举
配套视频课程已更新完毕,大家可通过以下两种方式观看视频讲解:
关注公众号:爱编程的大丙,或者进入大丙课堂学习。
1. 枚举1.1 枚举的使用枚举类型是C及C++中一个基本的内置类型,不过也是一个有点”奇怪”的类型。从枚举的本意上来讲,就是要定义一个类别,并穷举同一类别下的个体以供代码中使用。由于枚举来源于C,所以出于设计上的简单的目的,枚举值常常是对应到整型数值的一些名字,比如:
1234// 匿名枚举enum {Red, Green, Blue};// 有名枚举enum Colors{Red, Green, Blue};
在枚举类型中的枚举值编译器会默认从0开始赋值,而后依次向下递增,也就是说Red=0,Green=1,Blue=2。
1.2 枚举的缺陷C/C++的enum有个很”奇怪” 的设定,就是具名(有名字)的enum类型的名字,以及 enum 的成员的名字都是全局可见的。这与 C++中具名的 namespace、class/struct 及 union 必须通过名字::成员名的方式访问相比是格格不入的,编码过程中一不小 ...
扩展的 friend 语法
配套视频课程已更新完毕,大家可通过以下两种方式观看视频讲解:
关注公众号:爱编程的大丙,或者进入大丙课堂学习。
friend关键字在C++中是一个比较特别的存在。因为在大多数编程语言中是没有提供friend关键字的,比如Java。friend关键字用于声明类的友元,友元可以无视类中成员的属性( public、protected 或是 private ),友元类或友元函数都可以访问,这就完全破坏了面向对象编程中封装性的概念。但有的时候,friend关键字确实会让程序猿少写很多代码,因此 friend 还是在很多程序中被使用到。
1. 语法改进在 C++11 标准中对 friend关键字进行了一些改进,以保证其更加好用:
声明一个类为另外一个类的友元时,不再需要使用class关键字,并且还可以使用类的别名(使用 typedef 或者 using 定义)。
我们可以看看下面的例子:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525 ...
long long 整形
配套视频课程已更新完毕,大家可通过以下两种方式观看视频讲解:
关注公众号:爱编程的大丙,或者进入大丙课堂学习。
相比于C++98标准,C++11整型的最大改变就是多了long long。但事实上,long long 整型本来就离C++标准很近,早在1995年,long long 就被提议写入 C++98标准,却被C++标准委员会拒绝了。而后来,long long类型却进入了C99标准,而且也事实上也被很多编译器支持。于是辗转地,C++标准委员会又掉头决定将 long long纳入 C++11标准。
1. long long 类型C++11 标准要求 long long 整型可以在不同平台上有不同的长度,但至少有64位。long long 整型有两种∶
long long - 对应类型的数值可以使用 LL (大写) 或者 ll (小写) 后缀
12long long num1 = 123456789LL;long long num2 = 123456789ll;
unsigned long long - 对应类型的数值可以使用 ULL (大写) 或者 ull (小写) ...