摘要:
相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加malloc/free。(2)用法上也有所不同。函数malloc 的原型如下:void * malloc(size_t size);用malloc 申请一块长度为length 阅读全文
摘要:
1.若一个实例方法声明前带有virtual关键字,那么这个方法就是虚方法。2.虚方法与非虚方法的最大不同是,虚方法的实现可以由派生类所取代,这种取代是通过方法的重写实现的(以后再讲)3.虚方法的特点:虚方法前不允许有static,abstract,或override修饰符虚方法不能是私有的,因此不能使用private修饰符4.虚方法的执行:我们知道一般函数在编译时就静态地编译到了执行文件中,其相对地址在程序运行期间是不发生变化的,而虚函数在编译期间是不被静态编译的,它的相对地址是不确定的,它会根据运行时期对象实例来动态判断要调用的函数,其中那个申明时定义的类叫申明类,那个执行时实例化的类叫实例 阅读全文
摘要:
1.索引:索引是对数据库中一列或者多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。2.索引分为聚簇索引和非聚簇索引两种,聚簇索引是按照数据存放的物理位置为顺序的,非聚簇索引则不同;聚簇索引能提高多行检索的速度,非聚簇索引对于单行的检索很快。3.建立索引的目的就是加快对表中记录的查找或者排序,设置索引的代价:一是增加了数据库的存储空间,二是在插入和修改数据时需要花费较多的时间。4.索引的类型:A)聚集索引,表数据按照索引的顺序来存储的。对于聚集索引,叶子结点即存储了真实的数据行,不再有另外单独的数据页。B)非聚集索引,表数据存储顺序与索引顺序无关。对于非聚集索引,叶结点包含索 阅读全文
摘要:
1.数据库存储过程的优点:1)执行速度更快-在数据库中保存的存储过程语句都是经过编译的2)允许模块化设计-类似方法的复用3)提高系统安全性-防止SQL注入4)减少网络流通量-只要传输存储过程的名称2.程序设计时,出于安全、效率和扩展性方面的考虑,我们把很多数据操作都封装为存储过程。3.这一命令生成过程是如何实现的?Entity Framework 的要点是实体数据模型 (EDM),一个用于描述应用程序域对象的概念模型。Entity Framework 让开发人员可以针对实体数据模型提出查询,而不必操心数据库的具体操作。实体数据模型的实体以及实体之间的关系以 XML 形式定义,而开发人员基于该模 阅读全文
摘要:
构造数据库需要遵循一定的规则,这个规则就是范式。所谓范式就是符合某一级别的关系模式的集合;从规范的宽松到严格,分别由不同的范式,一般常用的有第一范式,第二范式,第三范式,及BC范式。范式就是建立在函数依赖的基础上的。1.函数依赖 函数依赖应该是通过数据项和企业的规则来决定的,通过表的内容得出的函数依赖可能不正确。2.第一范式:如果关系模式R的每一个关系r的属性都是不可分割的数据项,那么称R是第一范式的模式。简单地讲:每个属性都是原子项,不可分割。1NF属关系模式应具备的最起码条件,如果数据库设计不能满足第一范式,就不能称为关系型数据库,关系型数据库设计研究的关系规范化是在1NF之上进行的。3. 阅读全文
摘要:
对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a;而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。#include using namespace std;class CExample {private: int a;public: CExample(int b) { a=b;} void Show () { coutusing namespace std;class CExample {private: int a;public: C... 阅读全文
摘要:
数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。p=a; //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0]p++; //该语句执行过后,也就是p=p+1;p跨过行a[0][]指向了行a[1][]所以数组指针也称指向一维数组的指针,亦称行指针。指针数组定义 int *p[n] 阅读全文
摘要:
1、 什么是反射2、 命名空间与装配件的关系3、 运行期得到类型信息有什么用4、 如何使用反射获取类型5、 如何根据类型来动态创建对象6、 如何获取方法以及动态调用方法7、 动态创建委托1、什么是反射 Reflection,中文翻译为反射。 这是.Net中获取运行时类型信息的方式,.Net的应用程序由几个部分:‘程序集(Assembly)’、‘模块(Module)’、‘类型(class)’组成,而反射提供一种编程的方式,让程序员可以在程序运行期获得这几个组成部分的相关信息,例如: Assembly类可以获得正在运行的装配件信息,也可以动态的加载装配件,以及在装配件中查找类型信息,并创建该类型的 阅读全文
摘要:
.NET Framework通过委托提供了一种回调函数机制。internal delegate void FeedBack(Int32 value);内部委托FeedBack的声明,一个委托要指定一个回调方法的签名,在本例中,FeedBack委托标识了一个方法,该方法获取一个参数(int32类型),并返回void。其实.NET的委托类似于C语言的函数指针,区别在于.NET委托是类型安全的。使用委托的四部曲:(1)定义一种委托类型(2)委托执行时要调用方法(3)定义一个委托实例(4)委托实例的调用委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给 阅读全文
摘要:
1 if(o is Employee)2 {3 Employee e=(Employee)o;4 //在if语句剩余的部分中使用e; 5 }1 Employee e=o as Employee;2 if(e!=null)3 {4 //在if语句中使用e;5 }as方法简化代码写法,同时提升性能。为了将一个值类型转换为一个引用类型,可以使用装箱机制。实际发生的是:1、从托管堆分配内存。2、值类型的字段复制到新分配的堆内存。3、返回对象的地址。拆箱实际就是一个指针获取过程,该指针指向包含在一个对象中的原始值类型。 阅读全文