![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
不懂不想说
热爱游戏,热爱开发,不断提升自己!
展开
-
size_t类型
size_t 类型定义在cstddef头文件中,该文件是C标准库的头文件stddef.h的C++版。它是一个与机器相关的unsigned类型,其大小足以保证存储内存中对象的大小。例如:在用下标访问元素时,vector使用vector::size_type作为下标类型,而数组下标的正确类型则是size_t。示例代码 int i; // 定义一个int类型的变量i s原创 2014-03-01 10:16:00 · 862 阅读 · 0 评论 -
c++头文件库
#include 标准输入输出cin cout等 #include 算法库 如sort find等 #include 顺序容器,存储相同类型,同数组,但可以动态添加 #include #include string类型 #include 基本库 标准 C++ (同上的不再注释) #include //STL 通用算法 #inclu转载 2015-01-23 23:28:42 · 846 阅读 · 0 评论 -
c++l类中static成员函数和成员数据变量使用
c++中为了保护类的封装性,提出了static成员来代替全局变量,下面我们来了解一下static成员的使用方法:程序通过vs2008调试成功例一:#include "stdafx.h"#include#include#include#include#includeclass test{public: static void show(v转载 2015-11-03 12:08:53 · 634 阅读 · 0 评论 -
进程和线程区别总结
简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。从逻转载 2013-09-25 20:37:01 · 863 阅读 · 0 评论 -
C++ STL 学习总结
STL就是Standard Template Library,标准模板库。这可能是一个历史上最令人兴奋的工具的最无聊的术语。从根本上说,STL是一些“容器”的集合,这些“容器”有list, vector,set,map等,STL也是算法和其它一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。是C++标准库的一个重要组成部分,它由Stepanov and Lee等人最转载 2013-08-28 14:51:26 · 3076 阅读 · 1 评论 -
详解一道C++笔试题,考察重载、覆盖、多态
C++版看到的,说是面试宝典里的题目,考察重载、覆盖、多态等概念,比较有代表性。今天早上远程辅导 Yan Wang 同学学习 Qt 时还想到了这个题目,如果你能够正确理解这个题目,说明对于 C++ 中的函数重载、覆盖、虚函数、多态等有了正确的认识。然后呢,再来学习 Qt 就顺风顺水了。 题目是酱紫的:[cpp] view plaincopy转载 2015-10-20 18:20:45 · 398 阅读 · 0 评论 -
C++sprintf()函数
char buff[64]={0};for (int i = 0; i {sprintf(buff,"KaiFuActivity/LeftKuang/Btn%d",i);}printf("%s",buff);在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者转载 2015-11-06 11:31:21 · 381 阅读 · 0 评论 -
C/C++之回调函数
今天讨论下C/C++中的回调函数。 在理解“回调函数”之前,首先讨论下函数指针的概念。函数指针(1)概念:指针是一个变量,是用来指向内存地址的。一个程序运行时,所有和运行相关的物件都是需要加载到内存中,这就决定了程序运行时的任何物件都可以用指针来指向它。函数是存放在内存代码区域内的,它们同样有地址,因此同样可以用指针来存取函数,把这种指向函数入口地址的指针称为函数指转载 2015-11-06 12:35:43 · 463 阅读 · 0 评论 -
巧用do...while(0)
C++中,有三种类型的循环语句:for、while、do...while在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性 1. do...while(0)消除goto语句 通常,如果在一个函数中开始要分转载 2015-10-21 14:49:33 · 423 阅读 · 0 评论 -
C/C++中static关键字作用总结
1 2 6 7 15 16 28 29 45 46 3 5 8 14 17 27 30 44 47 64 4 9 13 18 26 31 43 48 63 65 10 12 19 25 3转载 2013-08-26 17:58:09 · 719 阅读 · 0 评论 -
C++ try()catch()抛异常
以前都是用try{} catch(…){}来捕获C++中一些意想不到的异常, 今天看了Winhack的帖子才知道,这种方法在VC中其实是靠不住的。例如下面的代码:try { BYTE* pch ;pch = (BYTE* )00001234 ; //给予一个非法地址 *pch =6 ; //对非法地址赋值,会造成Access Violation 异常} catch转载 2013-08-27 10:15:15 · 1359 阅读 · 0 评论 -
C++单体类 || 单例模式 的实现
一、普通Singleton#includeusing namespace std;class Singleton{ public: static Singleton* getInstance(); private: static Singleton* instance;转载 2013-10-08 21:54:13 · 3419 阅读 · 0 评论 -
设计模式C++实现——工厂模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍工厂模式的实现。 工厂模式属于创转载 2014-05-02 20:15:18 · 504 阅读 · 0 评论 -
C++赋值操作符
class String{public:String & operator=(const String &s);private:char *data;}String & String::operator=(const String &s);{if(&s != this){delete [] data;data = new char[str原创 2013-12-01 20:17:14 · 643 阅读 · 0 评论 -
C++UML类图
本文是我在读《大话设计模式》时的一篇读书笔记 这个矩形框代表一个类,这是一个类图,它包括三层:显示类的名称,如果是抽象类,则用斜体表示。类的特性,通常为字段和属性。类的操作,通常是方法和行为。注意前面的符号:"+"表示Public,"-"表示private,"#"表示protect。转载 2014-04-26 12:13:09 · 1521 阅读 · 0 评论 -
UML类图总结
前言类图和序列图是UML中最常用的两种Diagram。我将做详细的总结。在许多书中,或者网站中,在介绍一个系统的子系统的设计时,很多时候,都是给出简单的类图来简述构成子系统的类之间的关系。这足以说明类图的重要性。对类图的基本认识有以下两点:类图是以反映类的结构(属性、操作)以及类之间的关系为主要目的,描述了软件系统的结构,是一种静态建模方法;类图中的类与面向对象语言转载 2014-04-26 12:25:00 · 821 阅读 · 0 评论 -
UML建模之时序图(Sequence Diagram)
一、时序图简介(Brief introduction) 二、时序图元素(Sequence Diagram Elements)角色(Actor)对象(Object)生命线(Lifeline)控制焦点(Focus of Control)消息(Message)自关联消息(Self-Message)Combined Fragments 三、时序转载 2014-04-27 11:03:56 · 1101 阅读 · 0 评论 -
设计模式C++实现——观察者模式 (及附带Cocos2d观察者模式代码)
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍观察者模式的实现。 观察者模式:定转载 2014-06-03 17:54:53 · 1358 阅读 · 0 评论 -
C语言指针讲解
C语言指针是一个特殊的变量,其里面储存的地址。学会使用指针讲助你在编程之路行走的更快。原创 2014-06-14 13:14:39 · 1243 阅读 · 1 评论 -
程序员面试题测测你的能力如何
第一部分:没答案1.以下是题目详情: 子序列的定义:对于一个序列a=a[1],a[2],......a[n],则非空序列a'=a[p1],a[p2]......a[pm]为a的一个子序列,其中1 2.以下是题目详情: 给定一个包含1-n的数列,我们通过交换任意两个元素给数列重新排序。求最少需要多少次交换,能把数组排成按1-n递增的顺序,其中,数组长度不超过100。 例如: 原数组是3,原创 2013-10-01 22:17:07 · 1268 阅读 · 0 评论 -
基类指针指向派生类是安全的,而派生类指向基类则是不安全的
基类指针指向派生类是安全的,而派生类指向基类则是不安全的原创 2015-11-13 17:48:57 · 555 阅读 · 0 评论 -
C++中的构造函数,拷贝构造函数和赋值运算(很牛逼的解释)
C++中的构造函数,拷贝构造函数和赋值运算(很牛逼的解释)转载 2015-12-01 10:53:50 · 570 阅读 · 0 评论 -
VLD(Visual LeakDetector)内存泄露库的使用
我们的代码里会有很多的内存泄漏,如何快速的定位和修复这些内存的泄漏是一项非常重要的技能,在这里分享一下如何从开发的代码里找到这种问题。常见的C++程序分为两大类:MFC和Win32。先看第一种MFC程序如何找内存泄漏的问题。MFC程序比较容易一些,因为它已经提供了这个功能,我们新建一个MFC的工程,我们在看到每一个CPP文件里面都有这样一句: 1: #ifdef _转载 2016-01-26 16:50:43 · 744 阅读 · 0 评论 -
c++编译 (.obj, .lib, .dll, .exe的关系(附:lib和DLL的区别))
lib是和dll对应的。 lib是静态的库文件,dll是动态的库文件。 所谓静态就是link的时候把里面需要的东西抽取出来安排到你的exe文件中,以后运行 你的exe的时候不再需要lib。 所谓动态就是exe运行的时候依赖于dll里面提供的功能,没有这个dll,你的exe无法运 行。 lib, dll, e转载 2016-03-02 11:29:58 · 10326 阅读 · 1 评论 -
STL find_if应用及其他
C++ find find_if原创 2016-03-08 16:35:32 · 608 阅读 · 0 评论 -
C++模板偏特化和全特化
摘要:本文通过例子介绍了在 C++标准库中广泛使用的模板特化和偏特化,并指出了模板特化和偏特化的定义规则和应用规则。关键词:模板、特化、偏特化、全特化1.引言C++中的模板分为类模板和函数模板,虽然它引进到C++标准中的时间不是很长,但是却得到了广泛的应用,这一点在STL中有着充分的体现。目前,STL在C++社区中得到了广泛的关注、应用和研究。理解和掌握模板是学习、应用和研究以及扩充S原创 2016-06-13 16:33:36 · 925 阅读 · 0 评论 -
C++命名空间 namespace的作用和使用解析
C++ 命名空间 namespace的作用和使用解析转载 2016-07-11 18:29:26 · 2534 阅读 · 0 评论 -
C++const总结(出现在不同地方)
C++const的总结,const函数前,const函数后。转载 2015-02-10 10:45:58 · 1674 阅读 · 0 评论 -
内存管理文章(1)
程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本章的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。7.1内存分配方式内存分配方式有三种:(1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。(2) 在栈上创建转载 2015-11-02 20:50:04 · 374 阅读 · 0 评论 -
如何判断链表中是否有环
1.如何判断是否有环?如果有两个头结点指针,一个走的快,一个走的慢,那么若干步以后,快的指针总会超过慢的指针一圈。2.如何计算环的长度?第一次相遇(超一圈)时开始计数,第二次相遇时停止计数。3.如何判断环的入口点:碰撞点p到连接点的距离=头指针到连接点的距离,因此,分别从碰撞点、头指针开始走,相遇的那个点就是连接点。为什么呢?需要一个简单的计算过程:(1)当fast与slo转载 2015-10-26 22:29:26 · 346 阅读 · 0 评论 -
C++ 通过初始化列表和构造函数内赋值初始化成员变量的区别
一般我们进行成员变量初始化用两种方法第一种是通过在构造函数内赋值class Point{public:Point(){ _x = 0; _y = 0;};Point( int x, int y ){ _x = 0; _y = 0; }private:int _x, _y;};第二种是使用初始化列表class Point{publi原创 2015-10-28 19:37:22 · 674 阅读 · 0 评论 -
C++类总结
#include using namespace std;class Hello{public: int i; Hello(int j){i = j;cout ~Hello(){cout}; Hello h;int main(){Hello j;}#include using namespace st原创 2013-12-04 11:26:49 · 584 阅读 · 0 评论 -
求一个数组的和最大的连续子数组及扩展
在C++中a=1与a(1)有什么区别?a=1是赋值,a(1)是一个函数值求1亿内的素数,并输出。#include#includeconst long N = 10000001;bool prime[10000001];int main(){long i, j;for(i=2; i{if(i%2 == 0) prime[i]=false;els原创 2014-04-11 21:37:45 · 766 阅读 · 0 评论 -
STL容器特征总结和迭代器失效
Vector内部数据结构:连续存储,例如数组。随机访问每个元素,所需要的时间为常量。在末尾增加或删除元素所需时间与元素数目无关,在中间或开头增加或删除元素所需时间随元素数目呈线性变化。可动态增加或减少元素,内存管理自动完成,但程序员可以使用reserve()成员函数来管理内存。迭代器失效插入:vector的迭代器在内存重新分配时将失效(它所指向的元素在该操作的前后不再相同)。当把超转载 2015-01-22 20:59:41 · 685 阅读 · 0 评论 -
C/C++中的内存补齐机制(2)
在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等)的数据单元。在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。例如,下面的结构各成员空间分配情况:struct test转载 2015-11-02 20:51:31 · 511 阅读 · 0 评论 -
VC++下处理UTF8编码的字符串
utf-8转载 2015-11-17 19:42:10 · 1356 阅读 · 0 评论 -
C++中引用(&)的用法和应用实例
引用 总结转载 2015-11-25 11:44:40 · 553 阅读 · 0 评论 -
多线程例子和游戏日志记录例子
游戏日志记录例子 多线程例子 加锁解锁例子 文件夹检测和创建 文件的检测和创建原创 2016-06-21 17:10:58 · 778 阅读 · 0 评论 -
C++代理类
class Vehice{public:virtual double weight() const = 0;virtual void start() = 0;virtual Vehice* copy() const=0;virtual ~Vehice():};class RoadVehicle:public Vehice{/* ... */};原创 2013-12-02 20:46:57 · 648 阅读 · 0 评论 -
C++内存管理
[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权转载 2013-08-27 20:00:05 · 782 阅读 · 0 评论