C++
文章平均质量分 76
langminglang
这个作者很懒,什么都没留下…
展开
-
单链表的排序
一、单链表的插入排序ListNode *insertionSortList(ListNode *head) { if(head==NULL||head->next==NULL) return head; ListNode*p=NULL; ListNode*q=NULL; ListNode*one=NULL; ListNode*first=head; head=head->n原创 2017-03-17 21:01:33 · 545 阅读 · 0 评论 -
函数指针和函数对象
来自 http://www.cnblogs.com/lvpengms/archive/2011/02/21/1960078.html一、函数指针函数指针:是指向函数的指针变量,在C编译时,每一个函数都有一个入口地址,那么这个指向这个函数的函数指针便指向这个地址。函数指针的用途是很大的,主要有两个作用:用作调用函数和做函数的参数。函数指针的声明方法:数据类型标志符 (指针变量名)转载 2017-03-13 21:43:14 · 204 阅读 · 0 评论 -
C++ 成员变量的初始化方法总结
有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括:a.引用b.常量c.静态d.静态常量(整型)e.静态常量(非整型)常量和引用,必须通过参数列表进行初始化。静态成员变量的初始化也颇有点特别,是在类外初始化且不能再带有static关键字参考下面的代码以及其中注释:原创 2017-03-13 21:30:55 · 1974 阅读 · 0 评论 -
class占用内存问题
一、背景知识1:首先遵从内存对齐规则2:只有虚函数会占4个字节,其他的函数不占内存;无论多少个虚函数,只有这一个指针,4字节。//注意一般的函数是没有这个指针的,而且也不占类的内存;3、静态变量由于属于所有类对象共同所有,所以不占内存二、典型的计算类的占用内存的问题1空类的问题class CBase { }; sizeof(CBase)=1;原始的C结构原创 2017-03-13 19:48:24 · 1028 阅读 · 1 评论 -
对象的生灭——构造函数、拷贝构造函数、赋值构造函数和析构函数
123原创 2017-03-11 22:24:40 · 737 阅读 · 0 评论 -
虚函数与多态实现的机制分析
一、基类对象、派生类对象相互访问的规则没有虚函数时的规则A:基类能够被派生类对象赋值,只是取了派生类的基类部分进项初始化,B: 派生类不能被基类对象赋值,因为这样有一部分不能被初始化C: 基类的对象被派生类对象赋值,但是基类对象仍只能访问自己的函数D:基类的指针被派生类对象地址赋值,但是基类对象仍只能访问自己的函数E:建立一个基类的引用,但是赋予派生类对象,其实此引用只原创 2017-03-11 21:19:30 · 680 阅读 · 0 评论 -
C++的异常机制
异常处理是C++的一项语言机制,用于在程序中处理异常事件。异常事件在C++中表示为异常对象原创 2017-03-21 09:37:32 · 359 阅读 · 0 评论 -
模板特化
一、为什么要模板特化特化的概念:所谓特化,就是将泛型的东东搞得具体化一些,从字面上来解释,就是为已有的模板参数进行一些使其特殊化的指定,使得以前不受任何约束的模板参数,或受到特 定的修饰(例如const或者摇身一变成为了指针之类的东东,甚至是经过别的模板类包装之后的模板类型)或完全被指定了下来。模板为什么要特化:因为编译器认为,对于特定的类型,如果你能对某一功能更好的实现,那么就该原创 2017-03-20 22:09:13 · 1114 阅读 · 0 评论 -
EXtern "C"解析
一、深层揭密extern "C" extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;其次,被它修饰的目标是“C”的。让我们来详细解读这两重含义。 被extern "C"限定的函数或变量是extern类型的; extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在转载 2017-03-20 16:25:18 · 203 阅读 · 0 评论 -
C++中四种类型转换方式
一 四种C++类型转换方式1 static_cast用法:static_cast < type-id > ( expression )说明:1 该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。 2 对type-id 的类型无要求它主要有如下几种用法:用于类层次结构中基类和子类之间指针或引用的转原创 2017-03-20 15:42:11 · 1738 阅读 · 0 评论 -
补码、反码的相关问题
一. 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。那么,这里原创 2017-03-19 14:32:29 · 565 阅读 · 0 评论 -
float 和double的内存特点
C/C++的浮点数据类型有float和double两种。类型float大小为4字节,即32位,内存中的存储方式如下: 符号位(1 bit) 指数(8 bit) 尾数(23 bit)类型double大小为8字节,即64位,内存布局如下:符号位(1 bit) 指数(11 bit) 尾数(52 bit)下面主要解释,每个部分都是怎么存储的,都是什么意思以float为例原创 2017-03-19 14:29:15 · 476 阅读 · 0 评论 -
经常考到的几种区别
1 引用和指针的区别1)引用不可以为空,必须初始化,指针可以为空,所以在使用指针之前,为了安全起见,一般要做非空判断2)引用不可以改变指向,但是指针可以,常指针不可以改变指向3)引用是个别名,不占内存空间,而指针用于自己的内存空间4)指针和引用++和--的含义不同5)能建立指向数组的指针,但是不能建立数组的引用6)引用比指针更安全由于不存在空引用,一旦初始化后其指向就不原创 2017-03-19 11:46:48 · 436 阅读 · 0 评论 -
内联函数
1 为什么需要有内联函数当遇到普通函数调用时,程序会保存当前函数的执行现场,将函数中的局部变量及函数地址入栈,然后在将即将调用的新函数加载到内存当中,这个复杂的过程经历了参数的复制,跳转到所用的函数的内存位置,执行函数代码,返回值存储。等函数执行完毕,在获取之前函数调用的地址,回去继续执行那个函数,这是一个很消耗时间的过程。所以内联函数有如下好处:1)编译器不需要调转其他地址执行函数调用,原创 2017-03-19 11:17:31 · 433 阅读 · 0 评论 -
智能指针 同一个
一 C++提供的智能指针总结为什么需要智能指针?1)当抛出异常时,我们可能会忘记释放new的指针,导致内存泄漏,或者说较大的工程中,普通情况也会忘记析构指针2)出现两个指针指向同一块内存时,如果释放时处理不好,会出现释放一个内存两次,或者出现悬垂指针3)更不用说深拷贝和前拷贝的问题了所以提出了如下几种智能指针1 auto_ptr指针的实现:templateclas原创 2017-04-03 16:40:49 · 383 阅读 · 0 评论