首页 » C++

C/C++产生随机数的方法

       c库伪随机数发生器  rand  srand  大多时候用时间产生随机发生器的seed c++11 引入的伪随机数发生器.随机数抽象成随机数引擎和分布两部分.引擎用来产生随机数,分布产生特定分布的随机数 常用的就是线性均匀分布 uniform_int_distribution uniform_real_distribution阅读全文 »

2017年2月17日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

C++实战项目:坦克大战(五)

       上一篇中我们给主战坦克添加了发射炮弹的功能。不过有一个问题,炮弹飞到战场边缘时,自动消失的感觉不太好。我们今天来给炮弹加上一个爆炸的效果。  爆炸功能  爆炸的效果不仅仅用在炮弹上,当坦克被击中后也应该有这么一个爆炸效果。我们给所有的元素都抽象一个爆炸的功能,放在Object类中。阅读全文 »

2017年1月4日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

C++实战项目:坦克大战(四)

       上一篇中,我们添加了可以自动行驶的敌人坦克,今天我们给主战坦克添加最核心的功能——开炮。  第一次重构  既然要开炮,就要有炮弹。我们自然就想到要新建一个炮弹类。为了符合我们之前的设计思想,我们需要给这个新的炮弹类找一个基类。用Tank类作基类貌似不太合适,于是,我们要重构代码。  我们创建一个全新的Object类作为今后程序中所有类的基类。阅读全文 »

2016年12月30日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

C++实战项目:坦克大战(三)

       战场范围  之前我们的坦克从战场的一边走出之后会从另一边重新进入战场。这样不符合我们游戏的定义。我们需要把它们改成遇到战场边就不能再继续向前走了。  主战坦克  修改MainTank.cpp中的Move方法...阅读全文 »

2016年12月27日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

C++实战项目:坦克大战(二)

       这一篇中,我们继续继续进行我们的坦克大战。 位置信息数据结构  在游戏设计过程中,需要记录大量的位置信息,如果仅仅使用(x,y)坐标很容易出错。这一篇中,我们先定义两个简单的数据结构用来保存点和矩形的信息。 在项目中新建Model目录,创建下面四个文件:... 这个头文件创建了一个Point类,有两个成员变量m_x,m_y用来记录一个点的横、纵坐标。阅读全文 »

2016年12月13日
作者:鸡啄米 分类:软件开发 浏览: 评论:1

C++实战项目:坦克大战(一)

       对坦克大战情有独钟是因为大学时候第一次参加程序设计比赛就做的这个游戏。当时用的语言是Java,那个比赛让我悟出了面向对象的强大之处,我也是从那时开始接触设计模式的。对我而言,坦克大战有着非同寻常的意义,所以一定要带大家用C++实现一下。 知识准备 建议大家先看看面向对象编程的三个重要特性,之后再来学习后面的内容。 代码分享 这个项目中的代码会在GitHub上发布,里面的每一个分支对应着简书中的每阅读全文 »

2016年12月7日
作者:鸡啄米 分类:软件开发 浏览: 评论:3

编程语言间的战争

       1 桌面时代  古老的C 王国从1972诞生以后, 一直都非常强大, 这里的臣民对它又爱又恨, 因为它的法律允许它的臣民直接操作内存,执行效率极高, 但是又对内存分配回收不管不顾,全部扔给子民们去处理。  其实纯粹的C语言还是比较简单的, 只要你能真正的搞懂指针是怎么回事 , C++诞生以后,在C的基础上又加入了面向对象, 泛型编程等“时髦”概念阅读全文 »

2016年9月28日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

C/C++面试中碰到这种字符串指针的题你能得几分

       许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程度,我们能真正写好一个strcpy函数吗?我们都觉得自己能,可是我们写出的strcpy很可能只能拿到10分中的2分。读者可从本文看到 strcpy函数从2分到10分解答的例子,看看自己属于什么样的层次。此外,还有一些面试题考查面试者敏捷的思维能力。阅读全文 »

2016年9月27日
作者:鸡啄米 分类:软件开发 浏览: 评论:1

30年程序生涯26种语言 看我与“Hello World”的往事

       我最近在7月4日的那一周休了一个假,因此有时间来回顾我的职业生涯。令我震惊的是,我已经写了近30年的代码了!于是,我决定好好利用这段额外的休息时间来创作一篇怀旧的帖子,回顾在过去近30年时间中我工作过的编程语言。向我从“Hello, World”开始学习新语言的30年致敬。 我学习的第一种编程语言是TI BASIC,BASIC专门为微软TI 99 / 4A microcomputer而编写的一种语阅读全文 »

2016年9月8日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

结构体和类的内存字节对齐详解

       先说个题外话:早些年我学C程序设计时,写过一段解释硬盘MBR分区表的代码,对着磁盘编辑器怎么看,怎么对,可一执行,结果就错了。当时调试也不太会,又根本没听过结构体对齐这一说,所以,问题解决不了,好几天都十分纠结。后来万般无奈请教一个朋友,才获悉可能是结构体对齐的事,一查、一改,果真如此。 问题是解决了,可网上的资料多数只提到内存对齐是如何做的,却鲜有提及为什么这样做(即使提,也相当简单)。阅读全文 »

2016年5月11日
作者:鸡啄米 分类:软件开发 浏览: 评论:1

内存分配:堆和栈

       内存区域划分  栈区(stack)  1)程序运行时由编译器自动分配的一块连续的内容,存放函数的参数值,局部变量的值等  2)程序结束时由编译器自动释放  3) 栈由系统自动分配,程序员无法控制 4)只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。阅读全文 »

2016年4月15日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

MFC CFile类读写文件详解

       CFile类提供了对文件进行打开,关闭,读,写,删除,重命名以及获取文件信息等文件操作的基本功能,足以处理任意类型的文件操作。  一个读写文件的例子:  文件I/O  虽然使用CArchive类内建的序列化功能是保存和加载持久性数据的便捷方式,但有时在程序中需要对文件处理过程拥有更多的控制权,对于这种文件输入输出(I/O)服务的需求阅读全文 »

2016年1月11日
作者:鸡啄米 分类:软件开发 浏览: 评论:4

MFC工具栏的创建、设计与使用实例

       本文通过实例说明MFC工具栏的创建、设计和使用方法,包括三个demo。 demo1:创建一个工具栏 demo2:停靠和浮动工具栏 demo3:点击菜单项显示和隐藏工具栏阅读全文 »

2016年1月6日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

趣文:C++程序员离职前丧心病狂的报复

       有人先在 Twitter 发了一条推,号称 「C++ 砖家建议」:... 然后随着扩散和转发,越来越多丧心病狂的邪恶建议,最后汇集而成:...阅读全文 »

2015年11月6日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

最热门编程语言薪资与职位需求揭秘

       我们可以从与工作相关的指标来决定要学习的“最佳”技术,例如需求和薪资。职业规划公司Gooroo通过仔细查看了美国、英国和澳大利亚的超过50万份的IT职位空缺,得到了下面这份《2015年的工资和供需报告》。 需求量最大的前十项技术  以下这些就是在职位空缺广告中呼声最多的技术:...阅读全文 »

2015年10月14日
作者:鸡啄米 分类:职场人生 浏览: 评论:0

C++指针和引用的区别终极详解

       指针和引用形式上很好区别,但是他们似乎有相同的功能,都能够直接引用对象,对其进行直接的操作。但是什么时候使用指针?什么时候使用引用呢?这两者很容易混淆,在此我详细介绍一下指针和引用,力争将最真实的一面展现给大家。如果我喷得不够好,希望嘴下留情、手下留命,还请指点一二;如果感觉还不错,请大家鼓掌。阅读全文 »

2015年5月29日
作者:鸡啄米 分类:软件开发 浏览: 评论:1

TCP/UDP网络编程入门教程之一:TCP Server端——建模

       绝大部分关于socket编程的教程总是从socket的概念开始讲起的。要知道,socket的初衷是个庞大的体系,TCP/IP只是这个庞大体系下一个很小的子集,而我们真正能用上的更是这个子集中的一小部分:运输层(Host-to-Host Transport Layer)的TCP和UDP协议,以及使用这两个协议进行应用层(Application Layer)的开发。阅读全文 »

2015年4月14日
作者:鸡啄米 分类:软件开发 浏览: 评论:4

使用事件驱动模型构建高效稳定的网络服务器程序

       本文围绕如何构建一个高效稳定的网络服务器程序,从一个最简单的服务器模型开始,依次介绍了使用多线程的服务器模型、使用非阻塞接口的服务器模型、利用select()接口实现的基于事件驱动的服务器模型,和使用libev事件驱动库的服务器模型。通过比较各个模型,得出事件驱动模型更适合构建高效稳定的网络服务器程序的结论。阅读全文 »

2015年3月11日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

C++学习攻略--怎样学好C++语言

       之前发过一篇C语言要这样才能学好,本文来讲讲怎样学好C++。我把我个人的一些学习经验写在这里,希望对大家有用。首先,因为如何学好C语言中谈到了算法和系统,所以这里就只谈C++语言。 C++是最难的语言。 这个世界上最难的编程语言可能非C++莫属了。阅读全文 »

2015年3月4日
作者:鸡啄米 分类:软件开发 浏览: 评论:1

C++编译器自动生成的函数

       在C++中当创建一个空类时,C++就会默认的为这个类创建4个函数:默认的构造函数、析构函数、拷贝构造函数、以及赋值操作符。本文参考Effective C++介绍这几个函数。一. 函数的原型以及函数创建的时机 C++中创建一个空类:... 默认会生成4个函数,其函数的原型如下:...阅读全文 »

2015年1月10日
作者:鸡啄米 分类:软件开发 浏览: 评论:0