摘要: 在python中字符串可以用单引号括起来,也可以用双引号,这两种方式是等价的,而在PHP当中单引号和双引号的有些是不一样的,虽然表示的字符串,但是在php的单引号解析速度比双引号快,如果在Python用单号那么在字符串中就可以直接收写双引号了,反之亦然。这就是python为什么允许用两种方式的原因。在实际应用中,python 单引号和python 双引号用得比较多,有两种表示方式后,就不用老用... 阅读全文
posted @ 2017-09-04 17:54 actually96 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 一.添加第三方的头文件 这个问题再简单不过了,不过我还是要说下。 首先,添加头文件 #include "ControlCAN.h" 然后,再将这个头文件放到工程的目录下,就OK了,非常的简单 二.添加.lib文件 首先,将.lib文件放到对应的工程目录下(当然,放到其他路径也可以)。 但是,仅仅做这 阅读全文
posted @ 2017-09-04 17:45 actually96 阅读(3501) 评论(1) 推荐(0) 编辑
摘要: 一、QString 转换为 char * 将 QString 转 char *,需要用到 QByteArray 类,QByteArray 类的说明详见 Qt 帮助文档。<!--more--> 因为 char * 最后都有一个'\0'作为结束符,而采用 QString::toLatin1() 时会在字 阅读全文
posted @ 2017-09-04 17:30 actually96 阅读(439) 评论(0) 推荐(0) 编辑
摘要: struct Employee { ... }; struct Manager : Employee { ... }; struct Worker : Employee { ... }; struct MiddleManager : Manager, Worker { ... };如果经理类和工人类都继承自雇员类,很自然地,它们每个类都会从雇员类获得一份数据拷贝。如果不作特殊处理,一线经理类的实例... 阅读全文
posted @ 2017-09-04 16:37 actually96 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 1.为什么基类的析构函数是虚函数? 在实现多态时,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生。 下面转自网络:源地址 http://blog.sina.com.cn/s/blog_7c773cc50100y9hz.html a.第一段代码 #include using namespace std; class ClxBase{ public: ClxBase... 阅读全文
posted @ 2017-09-04 16:14 actually96 阅读(869) 评论(0) 推荐(0) 编辑
摘要: <!--more--> 注意:派生类是基类对象,反之不成立 在一定条件下,不同类型的数据之间可以进行类型转换,如可以将整型数据赋给双精度型变量。在赋值之前,先把整型数据转换成双精度型数据,然后再把它赋给双精度型变量。这种不同类型数据之间的自动转换和赋值,称为赋值兼容。在基类和派生类对象之间也存有赋值 阅读全文
posted @ 2017-09-04 16:13 actually96 阅读(2411) 评论(1) 推荐(1) 编辑
摘要: C++中常量成员函数的含义 <!--more--> 本文内容来源:《C++必知必会》 使用常量成员函数可以改变对象的逻辑状态,虽然对象的物理状态没有发生改变。考虑如下代码,它定义了一个类X: class X{ public: X():buffer_(0),isComputed_(false){} / 阅读全文
posted @ 2017-09-04 14:51 actually96 阅读(759) 评论(0) 推荐(0) 编辑
摘要: 写时拷贝技术是通过"引用计数"实现的,在分配空间的时候多分配4个字节,用来记录有多少个指针指向块空间,当有新的指针指向这块空间时,引用计数加一,当要释放这块空间时,引用计数减一(假装释放),直到引用计数减为0时才真的释放掉这块空间。当有的指针要改变这块空间的值时,再为这个指针分配自己的空间(注意这时 阅读全文
posted @ 2017-09-04 12:48 actually96 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 1. const char* 和string 转换(1) const char*转换为 string,直接赋值即可。 EX: const char* tmp = "tsinghua". string s = tmp;(2) string转换为const char*,利用c_str() EX: string s = "tsinghua"; c... 阅读全文
posted @ 2017-09-04 12:47 actually96 阅读(685) 评论(0) 推荐(1) 编辑
摘要: C++模板说到C++模板特化与偏特化,就不得不简要的先说说C++中的模板。我们都知道,强类型的程序设计迫使我们为逻辑结构相同而具体数据类型不同的对象编写模式一致的代码,而无法抽取其中的共性,这样显然不利于程序的扩充和维护。C++模板就应运而生。C++的模板提供了对逻辑结构相同的数据对象通用行为的定义。这些模板运算对象的类型不是实际的数据类型,而是一种参数化的类型。C++中的模板分为类模板和函数模板... 阅读全文
posted @ 2017-09-04 12:47 actually96 阅读(1047) 评论(0) 推荐(0) 编辑
摘要: 基本lambda语法基本形式如下:[capture](parameters) mutable ->return-type {body} [capture]:叫做捕获说明符,表示一个lambda表达式的开始能够捕获上下文中的变量共lamda函数使用。 (parameters):参数列表,即这个匿名的lambda函数的参数,如果不需要传递参数,则可以省略括号; mutable: m... 阅读全文
posted @ 2017-09-04 12:46 actually96 阅读(750) 评论(0) 推荐(0) 编辑
摘要: 前言 今日的C++不再是个单纯的“带类的C”语言,它已经发展成为一个多种次语言所组成的语言集合,其中泛型编程与基于它的STL是C++发展中最为出彩的那部分。在面向对象C++编程中,多态是OO三大特性之一,这种多态称为运行期多态,也称为动态多态;在泛型编程中,多态基于template(模板)的具现化与 阅读全文
posted @ 2017-09-04 12:44 actually96 阅读(1161) 评论(0) 推荐(0) 编辑
摘要: /**************************************************************************** 静态绑定:对象在声明时采用的类型,在编译期既已确定 动态类型:通常指一个指针或引用目前所指对象的类型,是在运行期决定的 静态绑定:绑定的是静态类 阅读全文
posted @ 2017-09-04 12:43 actually96 阅读(217) 评论(0) 推荐(1) 编辑
摘要: 目前为止,我们一直使用传统的类型转换符来进行简单对象的类型转换。例如,要把一个double类型的浮点型数字转换为int 的整型数字,我们是这样做的: int i; double d; i = (int) d; 或者 i = int (d);<!--more--> 这样做对基本数据类型时没问题的,因为 阅读全文
posted @ 2017-09-04 12:41 actually96 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 也就是说子类只能访问父类的保护和公有成员,而对象只能访问公有成员。继承方式 1. 三种继承方式不影响子类对父类的访问权限,子类对父类只看父类的访问控制权。 2. 继承方式是为了控制子类(也称派生类)的调用方(也叫用户)对父类(也称基类)的访问权限。 3. public、protected、private三种继承方式,相当于把父类的public访问权限在子... 阅读全文
posted @ 2017-09-04 12:40 actually96 阅读(990) 评论(0) 推荐(0) 编辑
摘要: 大端模式:数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中,这种存储模式就类似把数据当做字符串顺序处理,例如:数据中两个字节按顺序为:FE 10 ,它表示的一个数就是0xFE10。换句话说:内存的低地址存放着数据高位; 小端模式:数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中,这种存储方式就是将地址的高低和数据的位结合起来,前面的例子按照小端模式表示,应... 阅读全文
posted @ 2017-09-04 12:40 actually96 阅读(4059) 评论(1) 推荐(1) 编辑
摘要: C++中的inline用法<!--more--> 1. 引入inline关键字的原因 在c/c++中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了inline修饰符,表示为内联函数。 栈空间就是指放置程序的局部数据(也就是函数内数据)的内存空间。 在系统下,栈空间是有限的 阅读全文
posted @ 2017-09-04 12:39 actually96 阅读(2109) 评论(0) 推荐(0) 编辑
摘要: 一、基础部分 1.1 什么是可变长参数 可变长参数:顾名思义,就是函数的参数长度(数量)是可变的。比如 C 语言的 printf 系列的(格式化输入输出等)函数,都是参数可变的。下面是 printf 函数的声明: int printf ( const char * format, ... ); 可变 阅读全文
posted @ 2017-09-04 12:38 actually96 阅读(402) 评论(0) 推荐(0) 编辑
摘要: 1. 哈夫曼树的构造 给定N个权值分别为w1, w2, ..., Wn的节点。构造哈夫曼树的算法描述如下: 1)将这N个结点分别作为N棵树仅含一个结点的二叉树,构成森林F. 2)构造一个新节点,并从F中选取两棵根结点权值最小的树作为新节点的左、右子树,并且将新节点的权值置为左、右子树上根结点的权 值 阅读全文
posted @ 2017-09-04 12:36 actually96 阅读(15441) 评论(0) 推荐(0) 编辑
摘要: /boot 该目录默认下存放的是Linux的启动 文件和内核。 /initrd 它的英文含义是boot loader initialized RAM disk,就是由boot loader初始化的内存盘。在linux内核启动前,boot loader会将存储介质(一般是硬盘)中的initrd文件加载到内存,内核启动时会在访问真正的根文件系统前先访问该内存中的initrd文件系... 阅读全文
posted @ 2017-09-04 11:49 actually96 阅读(382) 评论(0) 推荐(0) 编辑