C++语言
文章平均质量分 66
helmsgao
这个作者很懒,什么都没留下…
展开
-
【C++】按照单个字符拆分字符串
C++没有现成的拆分函数,需要自行实现按照单个字符拆分字符串推荐的方法:原创 2022-06-19 00:47:36 · 759 阅读 · 1 评论 -
段错误(Segment fault)使用GDB调试core文件样例
core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump. (linux中如果内存越界会收到SIGSEGV信号,然后就会core dump)在程序运行的过程中,有的时候我们会遇到Segment fault(段错误)这样的错误。这种看起来比较困难,因为没有任何的栈、trace信息输出。该种类转载 2015-03-30 09:33:25 · 3081 阅读 · 0 评论 -
vim哲学
http://segmentfault.com/blog/nightire/1190000000445598哲学一http://segmentfault.com/blog/nightire/1190000000445621哲学二http://segmentfault.com/blog/nightire/1190000000446738哲学三转载 2014-12-02 15:42:24 · 942 阅读 · 0 评论 -
0x0D && 0x0A
今天在看代码时看到 0x0D和0x0A,那个是换行,那个是回车呢?说实话,不清楚,到网上搜一下吧,看到了,知道了! if (szCh == 0x0D) { continue; } if (szCh == 0x0A) { break; }原创 2014-11-26 08:37:00 · 6710 阅读 · 0 评论 -
C语言中extern的用法
在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。1. extern修饰变量的声明。举例来说,如果文件a.c需要引用b.c中变量int v,就可以在a.c中声明extern int v,然后就可以引用变量v。这里需要注意的是,被引用的变量v的链接属性必须是外链接(external)的,也就是说a.c要引用到v,不只是取决于在a.c转载 2014-12-28 12:49:25 · 825 阅读 · 0 评论 -
谁申请谁释放的原则
#includevoid func(int *p){ int *c = p;printf("%d\n",c[0]); //free(c);//这里最好不要释放,因为不是函数func申请的,不然会造成多次释放一块内存}int main(){int *b = (int*)malloc(3*sizeof(int)); //main函数中申请了内存*b原创 2014-12-04 20:23:53 · 2864 阅读 · 0 评论 -
C语言可执行文件形成的过程
转载 2014-11-20 19:49:44 · 887 阅读 · 0 评论 -
std::string, std::wstring, wchar_t*, Platform::String^ 之间的相互转换
最近做WinRT的项目,涉及到Platform::String^ 和 std::string之间的转换,总结一下:(1)先给出源代码:?std::wstring stows(std::string s){ std::wstring ws;ws.assign(s.begin(), s.end());returnws; }转载 2014-01-17 17:40:22 · 2738 阅读 · 0 评论 -
ffmpeg 捉获取动画的第一帧
ffmpeg で動画をjpeg画像に切り出し。連続サムネイルをつくるffmepg を使って動画をサムネイル画像に変換する次のコマンドで画像に切り出せるffmpeg -i hogegeho.mpeg -f image2 frame%d.jpg切り出せる・・・けど,一秒間毎に画像24枚出来る。10秒なら240枚出来ます。超大変動画は一秒24フレーム程度です(25fp原创 2013-10-22 15:55:59 · 1557 阅读 · 0 评论 -
C++模板
C++模板①模板是实现代码重用机制的一种工具。就是根据参数类型生成函数和类的机制。它可以分成两类:一是函数模板,二是类模板,他们允许用户构造模板函数,模板类例如:template T compare_value(T a, T b);②模板,模板函数,模板类和对象之间的关系: ※模板(函数模板,类模板)->实例化-> 模板函数。※模板(函数模板,类模板)->实例化-> 模板类->实原创 2013-10-15 10:02:33 · 881 阅读 · 0 评论 -
内联函数,构造函数,静态函数都不能是虚函数
inline, static, constructor三种函数都不能带有virtual关键字。inline是编译时展开,必须有实体; static属于class自己的,也必须有实体; virtual函数基于vtable(内存空间),constructor函数如果是virtual的,调用时也需要根据vtable寻找,但是constructor是virtual的情况下是找不到的,因为con转载 2012-05-04 11:18:17 · 6957 阅读 · 3 评论 -
C++ Lambda 表达式
C++11标准在去年8月份获得一致通过,这是自1998年后C++语言第一次大修订,对C++语言进行了改进和扩充。http://msdn.microsoft.com/zh-cn/library/vstudio/dd293608.aspxhttp://blog.sina.com.cn/s/blog_45497dfa0101cgww.htmlhttp://ww原创 2013-08-27 15:28:59 · 706 阅读 · 0 评论 -
(C++设计模式) ------工厂模式factory -- 创建型模式
(C++设计模式)原创 2013-07-24 11:27:53 · 1248 阅读 · 0 评论 -
必须使用【初始化列表】初始化数据成员的情况
cout原创 2013-07-30 16:15:18 · 3060 阅读 · 0 评论 -
C++中智能指针的设计和使用
C++中智能指针的设计和使用 智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为转载 2012-10-23 22:23:51 · 634 阅读 · 0 评论 -
the error: no operator << matches these operands
string imageName;cout <<"imageName is" << imageName <<endl; the error: no operator 头文件。the solution:#include "iostream" #include原创 2013-07-31 10:36:07 · 5562 阅读 · 0 评论 -
(C++)设计模式------装饰者模式 decorator
装饰者模式(开放关闭原则: 对扩展开放,对修改关闭)定义:动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。这里用到了继承又用到了组合,继承的作用在于:达到“类型匹配”,而不是简单的利用继承获取到“行为”。如果我们以来继承的,那么类的行为只能在编译的时候静态的决定,换句话说就是行为如果不是来自超类就是子类覆盖后的版本,反之,利用组合可以吧装饰者混合着用 而且是转载 2011-10-20 21:29:37 · 1068 阅读 · 0 评论 -
内存越界
内存越界:何谓内存访问越界,简单的说,你向系统申请了一块内存,在使用这块内存的时候,超出了你申请的范围。内存越界使用,这样的错误引起的问题存在极大的不确定性,有时大,有时小,有时可能不会对程序的运行产生影响,正是这种不易重现的错误,才是最致命的,一旦出错破坏性极大。什么原因会造成内存越界使用呢?有以下几种情况,可供参考: 例1: char buf[3转载 2015-03-30 09:23:17 · 2424 阅读 · 0 评论 -
堆(heap)和栈(stack)、内存泄漏(memory leak)和内存溢出
简单的可以理解为:heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中转载 2015-03-30 08:54:12 · 1378 阅读 · 0 评论 -
深搜非递归
#include <iostream>#include <stack>using namespace std;#define MaxNode 20#define MAX 2000#define StartNode 1int map[MaxNode+1][MaxNode+1];void dfs_stack(int start, int n){ in...转载 2018-03-06 11:26:15 · 759 阅读 · 0 评论 -
非递归求两点之间的路径(无向图)
// dfs.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <iostream> #include <stack> #include <map>#include <vector>using namesp...原创 2018-03-12 11:50:05 · 904 阅读 · 0 评论 -
深搜(非递归)实现获取两点之间的路径
用栈实现求两点之间的所有路径:// dfs.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <iostream> #include <stack> #include <map>#include <vector&g...原创 2018-03-12 11:26:53 · 1082 阅读 · 0 评论 -
深搜(非递归)实现获取两点之间的路径(起点和终点不重合)
// dfs.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <iostream> #include <stack> #include <map>#include <vector>using namesp...原创 2018-03-12 10:25:07 · 669 阅读 · 0 评论 -
轻松搞定面试中的二叉树题目
版权所有,转载请注明出处,谢谢!http://blog.csdn.net/walkinginthewind/article/details/7518888树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树有关转载 2015-06-13 01:06:03 · 753 阅读 · 0 评论 -
C++不得不知道的几点容易出错的知识点--1
必须注意的知识点:1. C++中定义常量时,应该尽量采用const变量定义的方式,而尽量不要采用宏定义的方式。2. 类的析构函数应该定义成虚函数,除非能够确定这个类不会被其他类继承。3. 应该尽量的避免从基类向子类的类型转换,因为向下的类型转化并不是安全的, C++中由子类向父类进行的类型转换是安全的。4. 可以使用const来修饰成员函数表示成员原创 2012-04-19 22:55:44 · 1547 阅读 · 1 评论 -
程序或-内存区域分配(五个段)--终于搞明白了
一.在学习之前我们先看看ELF文件。ELF分为三种类型:.o 可重定位文件(relocalble file),可执行文件以及共享库(shared library),三种格式基本上从结构上是一样的,只是具体到每一个结构不同。下面我们就从整体上看看这3种格式从文件内容上存储的方式,spec上有张图是比较经典的:如上图:其实从文件存储的格式来说,上面的两种view实际上是一样的,Segm...原创 2014-11-20 11:50:58 · 37740 阅读 · 7 评论 -
C++必学知识点
1.基础知识。虚函数,多态,纯虚函数,mutable2.boost 智能指针,C11特性,模板3.stl4.网络编程5.系统编程6.进程通讯7.线程通讯原创 2015-12-30 08:32:58 · 869 阅读 · 0 评论 -
const常量与define宏定义的区别
(1) 编译器处理方式不同 define宏是在预处理阶段展开。 const常量是编译运行阶段使用。(2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开。 const常量有具体的类型,在编译阶段会执行类型检查。(3) 存储方式不同 define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。 const常量会在内存中分原创 2012-05-15 11:06:59 · 50737 阅读 · 13 评论 -
c++异常处理机制示范例子及讲解
写了一个测试c++异常处理机制的例子,感觉有很好的示范作用,在此贴出来,给c++异常处理的初学者入门。本文后附有c++异常的知识普及,有兴趣者也可以看看。 下面的代码直接贴到你的console工程中,可以运行调试看看效果,并分析c++的异常机制。 #include "stdafx.h" #include #include #include转载 2012-10-17 12:09:57 · 893 阅读 · 0 评论 -
C++ 异常处理基础(1)
C++ 异常处理 入门异常:程序执行期间,可检测到的不正常情况。例如:0作除数;数组下标越界;打开不存在的文件;远程机器连接超时;malloc失败等等。程序的两种状态:正常状态和异常状态,发生不正常情况后,进入异常状态,从当前函数开始,按调用链的相反次序,查找处理该异常的程序片断。1.throw 表达式语义:用表达式的值生成一个对象(异常对象),程序进入异常状态。转载 2012-10-17 19:14:31 · 1119 阅读 · 0 评论 -
构造函数、析构函数和赋值函数
作者:寒小阳时间:2013年9月。出处:http://blog.csdn.net/han_xiaoyang/article/details/10833931。声明:版权所有,转载请注明出处,谢谢。类的构造函数、析构函数与赋值函数 学过C++的人都说自己知道构造函数、析构函数与赋值函数。它们看似太普通,以致让人容易麻痹大意,但请你转载 2015-06-28 20:53:17 · 705 阅读 · 0 评论 -
c++ 时间类型详解 time_t
我们在编程中可能会经常用到时间,比如取得系统的时间(获取系统的年、月、日、时、分、秒,星期等),或者是隔一段时间去做某事,那么我们就用到一些时间函数。linux下存储时间常见的有两种存储方式,一个是从1970年到现在经过了多少秒,一个是用一个结构来分别存储年月日时分秒的。time原创 2011-07-27 14:08:39 · 106885 阅读 · 11 评论 -
C++多态性实现的原理
1. 用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。2. 存在虚函数的类都有一个一维的虚函数表叫做虚表。类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。3. 多态性是一个接口多种实现,是面向对象的核心。分为类的多态性和函数的多态性。4. 多态用虚函数来实现,结合动态绑定。5. 纯虚函数是虚函数再加上= 0。6. 抽象类是指包转载 2014-12-15 16:44:44 · 873 阅读 · 0 评论 -
八进制数的表达方法!八进制数在转义符中的使用!
C,C++语言中,如何表达一个八进制数呢?如果这个数是 876,我们可以断定它不是八进制数,因为八进制数中不可能出7以上的阿拉伯数字。但如果这个数是123、是567,或12345670,那么它是八进制数还是10进制数,都有可能。所以,C,C++规定,一个数如果要指明它采用八进制,必须在它前面加上一个0,如:123是十进制,但0123则表示采用八进制。这就是八进制数在C、C++中的表达方法。原创 2015-03-24 08:50:51 · 22349 阅读 · 3 评论 -
(C++)设计模式------单例模式 singleton(简单的实现和对象释放的控制) -- 创建型模式
单例模式通常也被叫做单件模式 在我们的编程的过程中有很多的地方都要用到单例模式,就是使用时需要仅仅有一个实例,并提供一个访问它的全局的访问点,供全部可用到它的程序模块的共享。它又很多的实现的方法,通常情况下仅仅一个全局的变量就可以实现一个简单的单例。这里介绍的是用一个单体类来实现单例模式,用的是一个类静态私有指针变量指向类的唯一的实例,同时用一个静态的共有的方法获取这个实例。比如原创 2012-02-22 15:16:24 · 1526 阅读 · 0 评论 -
C++的三个基本特征
向对象的三个基本特征是:封装、继承、多态。封装封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。继承面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重转载 2013-07-02 10:58:06 · 2015 阅读 · 0 评论 -
C++虚函数表解析(图文并茂,写得很是不错)
C++虚函数表解析 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议转载 2011-09-27 20:47:44 · 730 阅读 · 0 评论 -
友元函数
1、为什么要引入友元函数:在实现类之间数据共享时,减少系统开销,提高效率 友元函数可以减少类型检查和安全性检查等时间开销,提高程序运行效率. 具体来说:为了使其他类的成员函数直接访问该类的私有变量 即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享转载 2012-04-23 15:37:02 · 1736 阅读 · 0 评论 -
svn的使用方法总结
首先先要保证代码是最新代码,且验证通过!1. 使用svn st | grep “^M”命令查看当前修改的文件,将其中不属于提交范围的文件恢复。恢复命令为:单个文件svn revert FileName 文件夹svn revert –r Directory2. 使用svn st | grep “^\?”命令查看当前新增的文件,将其中需要提交的原创 2012-04-30 13:48:53 · 1450 阅读 · 0 评论 -
C++中引用(&)的用法和应用实例
对于习惯使用C进行开发的朋友们,在看到c++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中它却有着不同的用途,掌握C++的&符号,是提高代码执行效率和增强代码质量的一个很好的办法。在c++学习提高篇(3)---隐式指针的文章中我详细介绍了在隐式指针&的用法,其实这两个概念是统一的。引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵转载 2012-04-27 17:02:20 · 25642 阅读 · 0 评论