C++
文章平均质量分 65
taylor_ttt
这个作者很懒,什么都没留下…
展开
-
位段
关键:其存储位置一般从右至左进行存储即:data: c(6bits) | b(2bits) |a(8bits). 依编译器而定,TMS320的DSP的CCS按右至左的顺序。对于位域的定义尚有以下几点说明:0)位段成员的类型必须指定为unsigned int类型;1) 一个位域必须存储在同一个字节中,不能跨两个字节。如一个字节所剩空间不够存放另一位域时,应从下一单元起存放该位域。也可以有意使某位域从下一单元开始;2) 由于位域不允许跨两个字节,因此位域的长度不能大于一个字节的长度,也转载 2010-11-27 17:35:00 · 496 阅读 · 0 评论 -
5分钟搞定内存字节对齐
<br />写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?讲讲字节对齐吧.<br /> <br />{<br /> 如果体系结构是不对齐的,A中的成员将会一个挨一个存储,从而sizeof(a)为11。显然对齐更浪费了空间。那么为什么要使用对齐呢?<br /> 体系结构的对齐和不对齐,是在时间和空间上的一个权衡。对齐节省了时间。假设一个体系结构的字长为w,那么它同时就假设了在这种体系结构上对宽度为w的数据的处理最转载 2010-11-25 10:10:00 · 501 阅读 · 0 评论 -
用EditPlus配置VC环境(VC6)
<br /> 对于C++开发, 我想在Windows下大家用的最多的应该是MS的VC++。但其强大的功能背后却有着“启动速度慢”,“占用资源多”的缺点,尤其是VS2005, 速度不是一般的慢。 当然,这也十分正常,鱼和熊掌向来是很难兼得。 用这个大家伙开发公司的大项目,用起来自然是得心应手;但对于一般的小程序,就有点“杀鸡用牛刀”的感觉了。 然而, 无论在工作还是平时自己学习中,写个小程序, 通常只要一个cpp文件就可以的测试程序还是经常有的事。这样每次打开VS2005就为写一个小小的测试程序,实在是有些“原创 2011-03-07 13:45:00 · 3492 阅读 · 2 评论 -
gcc 编译器常用的命令行参数一览
<br />gcc 编译器常用的命令行参数一览 (转)<br />这些常用的 gcc/g++ 命令行参数,你都知道么?<br />1. gcc -E source_file.c<br />-E,只执行到预编译。直接输出预编译结果。<br />2. gcc -S source_file.c <br />-S,只执行到源代码到汇编代码的转换,输出汇编代码。<br />3. gcc -c source_file.c<br />-c,只执行到编译,输出目标文件。<br />4. gcc (-E/S/c/) sour转载 2011-03-10 10:46:00 · 106 阅读 · 0 评论 -
C++中的多态性(vptr和vtable)
<br />多态性 (polymorphism) 是面向对象编程的基本特征之一。而在C++ 中,多态性通过虚函数 (virtual function) 来实现。我们来看一段简单的代码:<br /><br />#include <iostream><br />using namespace std;<br />class Base{<br /> int a;<br />public:<br /> virtual void fun1() {cout<<"Base::fun1()"<<endl;}<br />转载 2011-04-16 14:04:00 · 454 阅读 · 0 评论 -
c++继承经典例子
<br />c++继承经典例子<br />#include <iostream.h><br />class Base<br />{<br />private:<br /> int b_number;<br />public:<br /> Base( ){}<br /> Base(int i) : b_number (i) { }<br /> int get_number( ) {return b_number;}<br /> void p转载 2011-04-16 14:00:00 · 584 阅读 · 0 评论 -
C++ 友元(friend)
<br />问题的提出<br /> 我们已知道类具有封装和信息隐藏的特性。只有类的成员函数才能访问类的私有成员,程序中的其他函数是无法访问私有成员的。非成员函数可以访问类中的公有成员,但是假如将数据成员都定义为公有的,这又破坏了隐藏的特性。另外,应该看到在某些情况下,非凡是在对某些成员函数多次调用时,由于参数传递,类型检查和安全性检查等都需要时间开销,而影响程序的运行效率。<br /> 为了解决上述问题,提出一种使用友元的方案。友元是一种定义在类外部的普通函数,但它需要在类体内进行说明,为了与该类的成员转载 2011-04-16 14:02:00 · 429 阅读 · 0 评论 -
public、private、protected属性与public、private、protected继承
<br />一、先说类成员变量及成员函数的的属性。<br /><br />1.public 与 private 的区别<br />这两个的区别学过C++的都比较清楚,public的变量和函数在类的内部外部都可以访问,而private只有在类的<br />内部可以访问<br />class Base<br />{<br />public:<br /> Base(int a, int b = 0);<br /> int GetA();<br /> int m_b;<br />private:<br /> int转载 2011-04-16 14:05:00 · 573 阅读 · 0 评论 -
C++中public,protected,private访问小结
<br />=================================================<br />已知3个类O、P和Q,类O中定义了一个私有方法F1、一个公有方法F2和一个受保护的方法F3:类P和类Q是类O的派生类,其继承方式如下所示: <br />class P : protected O {…}; <br />class Q : public O {…}; <br />关于方法F1的描述中正确的是___(34)___;关于方法F2的描述中正确的是___(35)___;关于方法F3转载 2011-04-16 14:03:00 · 1150 阅读 · 1 评论 -
#include “”和#include 的区别
对于#include <filename.h> ,编译器从标准库路径开始搜索 filename.h对于#include “filename.h” ,编译器从用户的工作路径开始搜索filename.h <br />原创 2010-11-25 14:32:00 · 344 阅读 · 0 评论 -
浮点数与零的比较
<br />在C/C++语言中,Float为单精度,内存中占4个字节,有效数位是7位,(本来是8位的,但要除去一个正负符号位),即有效数字是7位,当超过这个精度时,浮点数就无能为力了。C++ 下的判断方法如下: <br /><br />“float型变量和“零值”比较的方法:<br />const float EPSINON = 0.000001;<br />if ((x >= - EPSINON) && (x <= EPSINON))<br />原创 2010-11-25 11:55:00 · 596 阅读 · 0 评论 -
内存对齐与位段
一.内存对齐<br /> 许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(通常它为4或8)的倍数,这就是所谓的内存对齐,而这个k则被称为该数据类型的对齐模数(alignment modulus)。当一种类型S的对齐模数与另一种类型T的对齐模数的比值是大于1的整数,我们就称类型S的对齐要求比T强(严格),而称T比S弱(宽松)。<br /> 这种强制的要求一来简化了处理器与内存之间传输系统的设计,二来可以提升读取数据的速度。比如这么一种处理器,它每次读写转载 2010-11-27 17:41:00 · 505 阅读 · 0 评论 -
C语言位运算详解
<br />位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作<br />运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。<br />C语言提供的位运算符列表:<br />运算符 含义 描述<br />& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0<br />| 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1<br />^ 按位异或 若参加运算的两个二进制位值相同则为转载 2010-11-27 17:44:00 · 322 阅读 · 0 评论 -
结构体学习网站
<br />http://wenku.baidu.com/view/fd1761aedd3383c4bb4cd273.html原创 2010-11-27 17:59:00 · 346 阅读 · 0 评论 -
C++输入输出流
一、 C++流的概念在C++语言中,数据的输入和输出(简写为I/O)包括对标准输入设备键盘和标准输出设备显示器、对在外存磁盘上的文件和对内存中指定的字符串存储空间(当然可用该空间存储任何信息)进行输入输出这三个方面。对标准输入设备和标准输出设备的输入输出简称为标准I/O,对在外存磁盘上文件的输入输出简称为文件I/O,对内存中指定的字符串存储空间的输入输出简称为串I/O。C++语言系统为实现数据的输入和输出定义了一个庞大的类库,它包括的类主要有ios,istream,ostream,iostream,ifst转载 2010-10-14 11:56:00 · 1011 阅读 · 0 评论 -
内存的字节对齐及结构体的sizeof计算
<br />(1)什么是字节对齐<br /> 一个变量占用 n 个字节,则该变量的起始地址必须能够被 n 整除,即: 存放起始地址 % n = 0, 对于结构体而言,这个 n 取其成员中的数据类型占空间的值最大的那个。<br />(2)为什么要字节对齐<br /> 内存空间是按照字节来划分的,从理论上说对内存空间的访问可以从任何地址开始,但是在实际上不同架构的CPU为了提高访问内存的速度,就规定了对于某些类型的数据只能从特定的起始位置开始访问。这样就决定了各种数据类型只能按照相应的规则在内存空间转载 2010-11-25 10:09:00 · 875 阅读 · 0 评论 -
指针函数 函数的指针
<br /> 指针函数与函数的指针 指针函数<br />函数不但可以返回数值型数据而且还可以返回指针值,能够返回指针值的函数叫指针函数。<br /><br />指针函数定义格式如下:<br /><br /> <br />类型标识符 *函数名(形参表)<br /> 函数体<br /> <br />(1)定义指针函数时,函数名前必须有*。<br />(2)返回的是一个指针值,而不是一个数值型数据。<br />例该函数是截去参数字符串的尾部空格,并原创 2010-11-26 09:46:00 · 483 阅读 · 0 评论 -
指针函数 函数的指针2
<br />(1) float(**def)[10] def是什么? <br />(2) double*(*gh)[10] gh是什么? <br />(3) double(*f[10])() f是什么? <br />(4) int*((*b)[10]) b是什么? <br /> <br /> <br /> <br />(1) def是一个指针, 指向的对象也是一个指针, 指向的指针最终指向的是10个float构成的数组. <br /> <br />(2) gh是指针, 指向的是10个元素构成的数组, 数组的原创 2010-11-26 09:54:00 · 334 阅读 · 0 评论 -
关于结构体成员变量的字节对齐的分析
【原创】关于结构体成员变量的字节对齐的分析Author: 李文雄(Horisly) Email: Horisly@126.comQQ: 250125755Date: 2005-5-17#includestdio.h#includestdlib.hstruct A{ char c; int n; long l; double d;};struct B{ char c1; int n; char c2; lo转载 2010-11-25 10:12:00 · 642 阅读 · 0 评论 -
C++虚函数表解析
<br />C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 <br />关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家 一转载 2011-04-16 14:07:00 · 426 阅读 · 0 评论