- 博客(27)
- 收藏
- 关注
原创 字节对齐问题详解
字节对齐,我的理解就是用空间换取时间,提高存取的效率。下面详细分析:1.什么是字节对齐?现代计算机中内存空间都是按照字节划分的,从理论上讲似乎对任何类型变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是字节对齐。注意:我们经常听说的对齐在N上,它的含义就是数据
2014-04-28 21:21:06 863
转载 静态成员变量和静态成员函数
数据成员可以分静态变量、非静态变量两种. 静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成员.非成静态员:所有没有加Static的成员都是非静态成员,当类被实例化
2014-04-20 14:32:20 745
转载 虚继承和虚基类的本质
虚继承和虚基类的定义是非常的简单的,同时也是非常容易判断一个继承是否是虚继承的,虽然这两个概念的定义是非常的简单明确的,但是在C++语言中虚继承作为一个比较生僻的但是又是绝对必要的组成部份而存在着,并且其行为和模型均表现出和一般的继承体系之间的巨大的差异(包括访问性能上的差异),现在我们就来彻底的从语言、模型、性能和应用等多个方面对虚继承和虚基类进行研究。 首先还
2014-04-20 14:28:35 643
转载 IP地址控件的使用
IP地址在计算机中表示是32位二进制,通过GetAddress()来获得IP时,得到的是一个由二进制所转化的长整型IP地址,比如IP地址202.201.112.98的长整型表示就是:3402199138,同样也可以使用http://3402199138/来访问,所以在进行套接字绑定时要进行相应的转换。 //将CString 型IP地址在IPAddressCtrl中显示
2014-04-20 13:59:00 842
转载 另一种向Excel表中保存数据的方法
本文中对Excel文件的操作都被封装进一个类CSpreadSheet中,通过它我们可以非常简便的实现各种Excel表格数据操作,并且可以对该类进行扩充来满足自己的需求。具体实现包含Excel文件操作类头文件#include "CSpreadSheet.h"新建Excel文件,并写入默认数据// 新建Excel文件名及路径,TestSheet为内部表名CSpr
2014-04-20 13:55:29 753
转载 直接通过ODBC读写Excel表格文件
想要通过ODBC直接读、写Excel表格文件,首先,应确保ODBC中已安装有Excel表格文件的驱动"MICROSOFT EXCEL DRIVER (*.XLS)"。然后,可根据下面步骤进行: 1. 在StdAfx.h文件中加入:#include #include 2. 通过ODBC直接创建Excel文件并在表中插入数据(暂定文件名:Demo.xls)//创
2014-04-20 13:50:35 1141
原创 排序算法总结(C++语言)
今天静下心来对一些排序算法进行总结,全部使用c++语言。//按名次排序template void Rearrange(T a[],int n,int r[]){ //按序重排数组a中的元素,使用附加数组u T *u=new T[n+1]; //在u中移动到正确的位置 for(int i=1;i<n;i++) u[r[i]]=a[i]; //移回到a中 for(int i=
2014-04-16 23:17:53 1282
原创 预处理器的小结
1.对程序作预处理前,编译器会对它进行几次翻译处理。 。首先把源代码中出现的字符映射到源字符集。 。编译器查找反斜线后紧跟换行符的实例并删除这些实例。 。编译器将文本划分成预处理的预言符号序列和空白字符及注释序列。注意的一点是编译器用一个空白字符代替每一个注释。2.预处理器不进行计算,它只是按照指令进行文字替换操作。3.宏常量可以用来指定标准数组的大小并作为
2014-04-16 22:53:23 646
原创 基础进程通信
45.互斥对象包含一个使用数量,线程ID和一个计数器。46.互斥对象是惟一与线程相关的内核对象,对互斥对象来说谁拥有谁释放。47.操作系统维护了线程的信息以及与该线程相关的互斥对象的信息,因为她知道哪个线程终止了。48.事件对象也属于内核对象,它包含以下三个成员: 。使用计数; 。用于指明该事件是一个自动重置的事件还是一个人工重置的事件的布尔值; 。用于
2014-04-16 22:50:46 538
原创 C/C++知识点总结(七)
63.C和C++中的内建集合都实现了两种不同的方法,复制对于这两种方法来说含义各不相同: 。结构体实现值语义:复制完成后,两个变量都有这个值的独立的副本。 。数组实现引用语义:复制完成后,两个变量都引用同一个底层对象。64.不同类型的容器不应该存在继承关系士收一个参数的构造函数定义了从参数类型到类类型的转换。如果使用了关键字explicit限定了这种构造函数,则它只能用于显
2014-04-16 22:33:59 606
原创 返回类型与参数类型的关系
注意不能定义一个返回类型与参数类型无关的函数。否则很多编译器无法通过编译。(虽然C++标准委员会已经批准了一种方式,允许返回类型不同于任何模版参数类型,但是,很少有编译器支持该方式)例如:template T sum(Iter it) {/*...*/}
2014-04-16 22:27:56 707
原创 只能定位出任何数组尾部之后的那一个元素的地址
1.不能定义一个返回类型与参数类型无关的函数。否则很多编译器无法通过编译。(虽然C++标准委员会已经批准了一种方式,允许返回类型不同于任何模版参数类型,但是,很少有编译器支持该方式)例如:template T sum(Iter it) {/*...*/}94.C和C++语言保证(且只能保证)能够定位超出了任何数组尾部之后的那一个元素的地址。换句话说,就是以下的a+10
2014-04-16 22:25:08 664
原创 单元素模式返回实例
89.希望有且只有一个类的实例返回给调用程序时,就可以使用单元素模式(Singleton Pattern)。这种类的声明如下: class TheOnlyInstance { public: static TheOnlyInstance* GetTheOnlyInstance(); //other methods protected: TheOnl
2014-04-16 22:22:02 514
原创 C/C++知识点总结(六)
52.函数对象提供了一种方法,将要调用的函数与准备传递给这个函数的隐式参数捆绑起来。53.和在C中一样,C++不可能有函数类型的变量,所以任何声明这种变量的企图都将立即被转换成指向函数的指针声明。和在C中一样,所有对函数指针的调用都等价与对这个指针所指向的函数的调用。54.C和C++的一个约定,两个或两个以上只用空格(包括换行符)分隔的字符串(用双引号引住)在编译时被联合起来当作一
2014-04-16 22:17:25 999 2
原创 C/C++知识点总结(五)
41.size_type是一个依赖于实现的整型,是在头文件string中定义的。string类将string::npos定义为字符串的最大长度,通常为无符号int的最大值。42.对象名不同于数组名,不会被看作是对象的地址。43.string.h和cstring支持对C风格字符串进行操纵的C库字符串函数,但不是支持string类。44.getline()将丢弃换行符,而get()
2014-04-16 22:08:17 779
原创 C/C++知识点总结(四)
31.如果文件名包含在尖括号中,则C++编译器将在存储标准头文件的主机系统的文件系统中查找;如果文件名包含在双引号中,则编译器将首先查找当前的工作目录或源代码目录,如果没有在那里找到头文件,则将在标准位置查找。32.作用域描述了名称在文件的多大范围内可见;链接性描述了名称如何在不同的单元间共享。链接性为外部的名称可在文件间共享,链接性为内部的名称只能由一个文件中的函数共享。自动变量的名
2014-04-16 22:01:41 850
原创 C/C++知识点总结(三)
21.必须在声明引用时进行初始化。22.对于参数列表的函数,必须从右向左添加默认值。也就是说,要为某个参数设置默认值,则必须为它右边的所有参数提供默认值;实参按从左到右的顺序依次被赋给相应的形参,而不能跳过任何参数;只有原型指定了默认值,函数定义与没有默认参数时完全相同。23.将源代码中的函数调用解释为执行特定的函数代码块被称为函数名联编。在编译过程中进行联编被称为静态联编(sta
2014-04-16 22:00:02 835
原创 C/C++知识点总结(二)
11.按值传递意味着创建原始变量的一个副本。12.默认的复制构造函数逐个复制非静态成员(成员复制也称为浅复制),复制的是成员的值。13.将已有的对象赋给另一个对象时,将使用重载的赋值操作符,初始化对象时不一定使用赋值操作符。14.决不会用作基类的类是不需要虚析构函数的:任何虚函数只在继承的情况下才有用。15.如果不想用户能够复制类的对象,就声明复制构造函数(可能还有赋值操作
2014-04-16 21:57:51 988
原创 C/C++知识点总结(一)
1.函数名称的作用域可以是全局的,但不能是局部的。2.对于不能在类声明中初始化静态数据成员的一种例外情况是,静态数据为整型或枚举型const。3.静态类成员有一个特点,无论创建多少对象,程序都只创建一个静态类变量副本。他与静态类变量存储在一起,而不是存储在对象中。4.声明类只是描述了对象的形式,并没有真正的创建对象,因此在被对象创建之前将没有用于存储值的空间。5.strle
2014-04-16 21:55:51 806
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人