C++
文章平均质量分 88
candice廷
做一位出色的算法工程师
展开
-
学习C++ Plus 字符串
这里只是列举在看书的过程中觉得比较重点的知识 1 首先需要区分字符常量和字符串常量的区别,字符常量是单引号表示比如‘s’,在存储的过程中是存储其ASCii码,但是字符串常量是存储其在内存中的地址。并且在末尾加上‘\0’表示结束。 2 strlen 函数计算字符串中字符的个数,不包含‘\0’,sizeof计算字符串数组的字节数。3 在键盘用cin等输入字符串时会在末尾自原创 2013-05-31 20:21:30 · 864 阅读 · 0 评论 -
C++基础—消息处理实例
有些类为了做一些工作需要对复制进行控制。Message类和Folder类分别表示电子邮件(或其他)消息和消息所出现的目录,一个给定消息可以出现在多个目录中。Message上有 save和 remove操作,用于在指定Folder中保存或删除该消息。数据结构: 对每个Message,我们并不是在每个Folder中都存放一个副本,而是使每个Message保存一原创 2014-09-29 11:44:19 · 1455 阅读 · 1 评论 -
C++基础—复制控制,指针成员管理
包含指针的类需要特别注意复制控制,原因是复制指针时只是复制了指针中的地址,而不会复制指针指向的对象! 将一个指针复制到另一个指针时,两个指针指向同一对象。当两个指针指向同一对象时,可能使用任一指针改变基础对象。类似地,很可能一个指针删除了一对象时,另一指针的用户还认为基础对象仍然存在。指针成员默认具有与指针对象同样的行为。大多数C++类采用以下三种方法之一管理指针成员:原创 2014-09-29 15:49:05 · 1288 阅读 · 1 评论 -
C++类—重载操作符
重载操作符是具有特殊名称的函数:保留字operator后接定义的操作符符号。如:[cpp] view plaincopySales_item operator+(const Sales_item &,const Sales_item &); 除了函数调用操作符之外,重载操作符的形参数目(包括成员函数的隐式this指针原创 2014-09-29 16:13:00 · 2456 阅读 · 1 评论 -
面向对象编程—基类构造函数和复制控制
由于每个派生类对象都包含一个基类部分,因此可以像使用基类对象一样在派生类对象上执行操作。对于指针/引用,可以将派生类对象的指针/引用转换为基类子对象的指针/引用。基类类型对象既可以作为独立对象存在,也可以作为派生类对象的一部分而存在,因此,一个基类对象可能是也可能不是一个派生类对象的部分,因此,没有从基类引用(或基类指针)到派生类引用(或派生类指针)的(自动)转换。关于对象原创 2014-10-10 17:10:55 · 806 阅读 · 1 评论 -
面向对象编程—派生,继承
面向对象编程基于的三个基本概念:数据抽象、继承和动态绑定。在C++中,用类进行数据抽象,用类派生从一个类继承另一个:派生类继承基类的成员。动态绑定使编译器能够在运行时决定是使用基类中定义的函数还是派生类中定义的函数。继承和动态绑定在两个方面简化了我们的程序:[继承]能够容易地定义与其他类相似但又不相同的新类,[派生]能够更容易地编写忽略这些相似类型之间区别的程序。原创 2014-10-08 15:44:33 · 855 阅读 · 1 评论 -
解析 指针数组,数组指针,函数指针
一 :关于指针和堆的内存分配 指针数组 : 一个数组里放的都是指针,我们把他叫做指针数组int * a[10]; 由于它是一个数组,他是不能从堆空间里申请空间的。 只能做个循环,每个元素去申请空间,或者每个元素去指向另外的地址空间。 数组指针 : 一个指向一唯或者多唯数组的指针; int * b=new int[10]; 指向一唯数组的指针b ; 一些例子:原创 2015-01-06 21:07:56 · 766 阅读 · 0 评论 -
Static成员变量,static成员函数解析
最近看Effective C++经常看到一些和static相关的内容,希望综合整理一下,如果有不全,还望补充:1 类中的Static成员变量static成员它不像普通的数据成员,static数据成员独立于该类的任意对象而存在,每个static数据成员是与类关联的对象,并不与该类的对象相关联!一般为类申请一个对象,是对类中成员变量申请一个副本,各个对象之间的成员变量和函数互不原创 2015-01-08 20:18:07 · 1602 阅读 · 0 评论 -
深入剖析智能指针 shared_ptr
在effective C++经常会提到智能指针,这里对shared_ptr进行一个总结:1 简要介绍用法智能指针主要是用于资源管理,当申请一个资源的时候为了保证在离开控制流的时候对应资源应该得到相应的释放,这个时候如果资源对应一个类,在构造类的时候进行资源的分配(也就是书中经常提到的Resource Acquisition Is Initialization RAII),在对象离开作用域原创 2015-01-13 15:21:43 · 1670 阅读 · 1 评论 -
完整类实现:构造,析构,遍历二叉树
根据前面一个博文内容已经讲述了如何根据两种遍历方式进行构建二叉树这里利用递归方式遍历二叉树,递归方式比较简单,后续补充其余非递归方式再此主要是完善类的使用:其中重点在于:接口定义二叉树的析构删除以及类成员变量中如果有指针,同时涉及复制构造函数和赋值操作符函数时需要用到的智能指针如果接口方面定义不够好,还望包涵.h文件#include #include #incl原创 2015-01-11 01:08:02 · 4731 阅读 · 0 评论 -
C++基础三剑客—复制构造函数,赋值操作,析构函数
当定义一个新类型时,需要显式或隐式地指定复制、赋值和撤销该类型的对象时会发生什么– 复制构造函数、赋值操作符和析构函数的作用! 复制构造函数:具有单个形参,该形参(常用const修饰)是对该类类型的引用。当定义一个新对象并用一个同类型的对象对它进行初始化时,将显式的使用复制构造函数;当将该类型的对象传递给函数或者从函数返回该类型的对象时,将隐式使用复制构造函数。 析构原创 2014-09-26 17:22:05 · 1003 阅读 · 1 评论 -
scanf_s和getchar自己解疑
1.scanf_s是scanf的安全版本,这里所谓的安全其实就是在输入的时候进行边界检查罢了。2 scanf是一个不是甚强大的终端,如果用户按照scanf的输入格式输入相应内容入:scanf("%d",&a);这时候,如果用户输入一个整数,scanf返回大于0的整数(1)。相反如果用户输入了一个字符:a那么scanf就会返回0.3scanf在返回一个值以后在标准输入缓冲区还会剩下上次输入的原创 2014-09-02 15:56:11 · 1134 阅读 · 0 评论 -
类基本概念1
先给出一个类的定义:原创 2014-09-22 15:14:03 · 587 阅读 · 1 评论 -
vs下debug运行正常,release下出现异常
VC下Debug和Release区别最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步定位到问题所在处,才发现原来是给定的一个数组未初始化,导致后面处理异常。网上查找了些资料,在这 罗列汇总下,做为备忘~ 一、Debug 和 Release 的区别 Deb转载 2013-06-13 15:07:28 · 14466 阅读 · 1 评论 -
opencv中数据类型转换
opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化。而CvMat和IplImage类型更侧重于“图像”,opencv对其中的图像操作(缩放、单通道提取、图像阈值操作等)进行了优化。在opencv2.0之前,opencv是完全用C实现的,但是,IplIm转载 2013-06-13 16:45:17 · 3253 阅读 · 0 评论 -
读写文件 fread,fwrite
程序示例示例一:#include struct mystruct{ int i; char cha;};int main(void){ FILE *stream; struct mystruct s; if ((stream = fopen("TEST.$$$", "wb")) == NULL) /* open file TEST.$原创 2014-03-12 16:51:44 · 720 阅读 · 0 评论 -
类基本概念3—默认构造函数
默认构造函数 只要定义一个对象时没有提供初始化式,就使用默认构造函数。为所有形参提供默认实参的构造函数也定义了默认构造函数。1、合成的构造函数 一个类哪怕只是定义了一个构造函数,编译器也不会再生成默认构造函数。这条规则的根据是,如果一个类在某种情况下需要控制对象初始化,则该类很可能在所有情况下都需要控制。 只有当一个类没有定义构造函数时,编译器才会自原创 2014-09-22 16:15:29 · 991 阅读 · 1 评论 -
类基本概念4—友元
一、友元 友元机制允许一个类将对其非公有成员的访问权授予指定的函数或类(对未被授权的函数或类,则阻止其访问);友元的声明以关键字friend开始,但是它只能出现在类定义的内部。友元声明可以出现在类中的任何地方:友元不是授予友元关系的那个类的成员,所以它们不受其声明出现部分的访问控制影响。原创 2014-09-22 16:28:03 · 697 阅读 · 1 评论 -
类基本概念2-作用域,构造函数上
每个类都定义了自己的新作用域与唯一的类型。即使两个类具有完全相同的成员列表,它们也是不同的类型。每个类的成员不同与任何其他类(或任何其他作用域)的成员。原创 2014-09-22 15:43:59 · 642 阅读 · 1 评论 -
类基本概念5—类静态成员
static类成员 通常,static数据成员存在于类类型的每个对象中,static数据成员独立于该类的任意对象而存在:每个static数据成员是与类关联的对象,并不与该类的对象相关联! 正如类可以定义共享的static数据成员一样,类也可以定义static成员函数。static成员函数没有this形参,它可以直接访问所属类的static成员,但是不能直接使用stati原创 2014-09-22 16:37:43 · 703 阅读 · 2 评论 -
双线性插值算法
图像的缩放很好理解,就是图像的放大和缩小。传统的绘画工具中,有一种叫做“放大尺”的绘画工具,画家常用它来放大图画。当然,在计算机上,我们不再需要用放大尺去放大或缩小图像了,把这个工作交给程序来完成就可以了。下面就来讲讲计算机怎么来放大缩小图象;在本文中,我们所说的图像都是指点阵图,也就是用一个像素矩阵来描述图像的方法,对于另一种图像:用函数来描述图像的矢量图,不在本文讨论之列。越是简单的模型越转载 2013-09-10 16:37:05 · 1396 阅读 · 0 评论