自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 智能指针 同一个

一 C++提供的智能指针总结为什么需要智能指针?1)当抛出异常时,我们可能会忘记释放new的指针,导致内存泄漏,或者说较大的工程中,普通情况也会忘记析构指针2)出现两个指针指向同一块内存时,如果释放时处理不好,会出现释放一个内存两次,或者出现悬垂指针3)更不用说深拷贝和前拷贝的问题了所以提出了如下几种智能指针1 auto_ptr指针的实现:templateclas

2017-04-03 16:40:49 386

原创 strcpy函数的实现

在面试中,实现strcpy函数是一个比较常见的考点,但是并不是每个人都能写的完全正确:第一种写法:char *my_strcpy(char *dst,const char *src) { assert(dst != NULL); assert(src != NULL); char *ret = dst; while((* dst++ =

2017-04-02 21:16:28 376

原创 C++的异常机制

异常处理是C++的一项语言机制,用于在程序中处理异常事件。异常事件在C++中表示为异常对象

2017-03-21 09:37:32 361

原创 模板特化

一、为什么要模板特化特化的概念:所谓特化,就是将泛型的东东搞得具体化一些,从字面上来解释,就是为已有的模板参数进行一些使其特殊化的指定,使得以前不受任何约束的模板参数,或受到特 定的修饰(例如const或者摇身一变成为了指针之类的东东,甚至是经过别的模板类包装之后的模板类型)或完全被指定了下来。模板为什么要特化:因为编译器认为,对于特定的类型,如果你能对某一功能更好的实现,那么就该

2017-03-20 22:09:13 1117

转载 C++如何限制类对象只能静态分配或者只能只能动态分配

动态分配就是用运算符new来创建一个类的对象,在堆上分配内存。静态分配就是A a;这样来由编译器来创建一个对象,在栈 上分配内存。(1)动态分配(在堆上分配内存)将类的构造函数和析构函数设为protected属性,这样类对象不能够访问,但是派生类能够访问,能够正常的继承。同时创建另外两个create和destory函数类创建对象。(将create设为static

2017-03-20 21:50:43 1072

转载 EXtern "C"解析

一、深层揭密extern "C" extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;其次,被它修饰的目标是“C”的。让我们来详细解读这两重含义。 被extern "C"限定的函数或变量是extern类型的;  extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在

2017-03-20 16:25:18 205

原创 C++中四种类型转换方式

一 四种C++类型转换方式1 static_cast用法:static_cast < type-id > ( expression )说明:1 该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。        2 对type-id 的类型无要求它主要有如下几种用法:用于类层次结构中基类和子类之间指针或引用的转

2017-03-20 15:42:11 1780

转载 C++编译与链接

一、初步认识C++的一个程序的执行可以认为有以下的几个环节源程序->预处理->编译和优化->生成目标文件->链接->可执行文件      首先看看我们是如何写一个程序的。如果你在使用某种IDE(Visual Studio,Elicpse,Dev C++等),你可能不会发现程序是如何组织起来的(很多人因此而反对初学者使用IDE)。因为使用IDE,你所做的事情,就是在一个项

2017-03-19 16:52:07 429

原创 补码、反码的相关问题

一. 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式,  叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。那么,这里

2017-03-19 14:32:29 572

原创 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 484

原创 C++小知识点总结

1 运算符的优先级1 括号成员运算符排第一:()【】-> .2)全体单目运算符排第二:++ -- & *! ~sizeof -3)乘除余排第三4)加减第四5)移位五>6)关系六:> = 7)等于不等号排第七8)& ^ | 8 91011)&& || 11 和1213)? :14)赋值2 不能重载的运算符  .    .*   ::  sizeof

2017-03-19 11:52:59 279

原创 经常考到的几种区别

1 引用和指针的区别1)引用不可以为空,必须初始化,指针可以为空,所以在使用指针之前,为了安全起见,一般要做非空判断2)引用不可以改变指向,但是指针可以,常指针不可以改变指向3)引用是个别名,不占内存空间,而指针用于自己的内存空间4)指针和引用++和--的含义不同5)能建立指向数组的指针,但是不能建立数组的引用6)引用比指针更安全由于不存在空引用,一旦初始化后其指向就不

2017-03-19 11:46:48 437

原创 内联函数

1 为什么需要有内联函数当遇到普通函数调用时,程序会保存当前函数的执行现场,将函数中的局部变量及函数地址入栈,然后在将即将调用的新函数加载到内存当中,这个复杂的过程经历了参数的复制,跳转到所用的函数的内存位置,执行函数代码,返回值存储。等函数执行完毕,在获取之前函数调用的地址,回去继续执行那个函数,这是一个很消耗时间的过程。所以内联函数有如下好处:1)编译器不需要调转其他地址执行函数调用,

2017-03-19 11:17:31 434

原创 单链表的排序

一、单链表的插入排序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 547

转载 函数指针和函数对象

来自 http://www.cnblogs.com/lvpengms/archive/2011/02/21/1960078.html一、函数指针函数指针:是指向函数的指针变量,在C编译时,每一个函数都有一个入口地址,那么这个指向这个函数的函数指针便指向这个地址。函数指针的用途是很大的,主要有两个作用:用作调用函数和做函数的参数。函数指针的声明方法:数据类型标志符 (指针变量名)

2017-03-13 21:43:14 207

原创 前置++和后置++不同的本质分析

2017-03-13 21:33:38 396

原创 C++ 成员变量的初始化方法总结

有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括:a.引用b.常量c.静态d.静态常量(整型)e.静态常量(非整型)常量和引用,必须通过参数列表进行初始化。静态成员变量的初始化也颇有点特别,是在类外初始化且不能再带有static关键字参考下面的代码以及其中注释:

2017-03-13 21:30:55 1975

原创 class占用内存问题

一、背景知识1:首先遵从内存对齐规则2:只有虚函数会占4个字节,其他的函数不占内存;无论多少个虚函数,只有这一个指针,4字节。//注意一般的函数是没有这个指针的,而且也不占类的内存;3、静态变量由于属于所有类对象共同所有,所以不占内存二、典型的计算类的占用内存的问题1空类的问题class CBase { }; sizeof(CBase)=1;原始的C结构

2017-03-13 19:48:24 1034 1

原创 法曲率、主曲率、平均曲率和高斯曲率

平均曲率、主曲率和高斯曲率是曲率的三个基本要素。法曲率:曲面在一点沿着不同方向的弯曲程度不同。或者说曲面离开切平面的速度不同。这个弯曲属性可以用这一点的沿着这个方法的法曲率刻画主曲率:过曲面上某个点上具有无穷个正交曲率,其中存在一条曲线使得该曲线的曲率为极大,这个曲率为极大值Kmax,垂直于极大曲率面的曲率为极小值Kmin。这两个曲率属性为主曲率。他们代表着法曲率的极值。平

2017-03-13 19:30:34 28037

原创 对象的生灭——构造函数、拷贝构造函数、赋值构造函数和析构函数

123

2017-03-11 22:24:40 740

原创 虚函数与多态实现的机制分析

一、基类对象、派生类对象相互访问的规则没有虚函数时的规则A:基类能够被派生类对象赋值,只是取了派生类的基类部分进项初始化,B:  派生类不能被基类对象赋值,因为这样有一部分不能被初始化C:  基类的对象被派生类对象赋值,但是基类对象仍只能访问自己的函数D:基类的指针被派生类对象地址赋值,但是基类对象仍只能访问自己的函数E:建立一个基类的引用,但是赋予派生类对象,其实此引用只

2017-03-11 21:19:30 684

原创 动态规划问题

一、简单的动态规划1)兔子问题2)青蛙跳台阶3)青蛙变态跳台阶4)1*2的长方形填满n*1的长方形问题上述几个问题都是一样的,都属于斐波那契额数列问题二、最长上升或下降子序列

2017-03-08 17:03:44 1296

原创 二维数组的各种sizeof问题

#include#include#includeint main()  {      int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};     int n=sizeof(a[0][0]);        printf("a=0x%x,*a=0x%x\n",a,*a);     printf("a size=%d,*a siz

2017-03-01 10:57:08 2352

原创 网格生产的常用算法

1 网格生成的常用算法:这里所谓的网格生产算法是:有限元网格生产算法,即对对象实体进行网格划分,而我们要进行的是此处的逆工程,需要根据点云重建三角网格,,然后恢复处曲面信息网格生成算法可以分为两类:结构化网格和非结构化网格                                                            结构化网格:单元结点之间的连接方式只有有限

2017-02-16 17:08:53 11697

原创 一维数组、二维数组、字符数组的&、sizeof等操作

一 前提知识1、sizeof是一个运算符,sizeof(a)计算的是a这种变量类型或结构体所占的字节数2、变量名一旦进行了移位操作,那么他就退化成了指针3、数组名和对数组名取地址的值是一样的,但是含义不一样4、数组名和指针的区别    指针是一个变量,变量的值是另外一个变量的地址。那么,既然指针是变量,那么指针必然有自己的存储空间,只不过是该存储空间内的值是一个地址值,而不

2017-02-16 11:10:56 2093

原创 关于数学上特殊数(如质数、素数)的笔试题

1 计算N以内的素数注意:代码部分参考了http://www.cnblogs.com/ladd/archive/2011/05/18/2562100.html和http://blog.csdn.net/haoni123321/article/details/7930827前提知识:素数又称为质数,指的是只能被1或本身整除的数;                     任何合数肯

2017-01-13 10:55:48 466

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除