C++多态(上)——虚函数、虚表

OOP的核心思想是多态性(polymorphism)。其含义是“多种形态”。我们把具有继承关系的多个类型称为多态类型。引用或指针的静态类型和动态类型不同这一事实正是C++语言支持多态性的根本所在。 多态性:当用于面向对象编程的范畴时,多态性的含义是指程序能通过引用或指针的动态类型来获取类型特定...

2017-04-18 15:42:31

阅读数:512

评论数:1

C++继承详解三 ----菱形继承、虚继承

今天呢,我们来讲讲菱形继承与虚继承。这两者的讲解是分不开的,要想深入了解菱形继承,你是绕不开虚函数这一点的。它俩有着什么关系呢?值得我们来剖析。 菱形继承也叫钻石继承,它是多继承的一种特殊实例吧,它的基本架构如下图: 在我们的设想中,D所对应的对象模型应该如下图所示: 下面我们来用一段代码验...

2017-04-17 23:01:25

阅读数:358

评论数:0

智能指针(下)-----boost库智能指针,定制删除器、循环引用

上一篇我们已经详细讲解了智能指针的基础性知识和auto_ptr的模拟实现。 今天呢我们来讲解boost库的发展。 在C++11标准出来之前,C++98标准中都一直只有一个智能指针auto_ptr,我们知道,这是一个失败的设计。它的本质是管理权的转移,这有许多问题。而这时就有一群人开始扩展C++...

2017-04-15 16:54:48

阅读数:259

评论数:0

智能指针(上)-----动态管理内存问题,auto_ptr的模拟实现

今天我们来详解C++中一个重要的知识点——智能指针。文章主要以下面几点来展开: 智能指针定义及动态内存的管理 智能指针作用 auto_ptr的模拟实现 智能指针定义 智能指针简单理解就是智能的指针,它可以智能/自动化的管理指针所指向的动态内存的释放。 智能指针和普通指针的区别在于智能指针实际上...

2017-04-13 09:22:29

阅读数:668

评论数:0

模板2——顺序表的实现(现代写法的进一步解析,更深层次的深浅拷贝)

之前我们讲解了关于模板方面的知识,今天我们用模板来实现顺序表。 这次顺序表的实现和之前没有太大区别,但还是有几点需要我们来重点进行详解。 我们先来看下面这段代码#include<iostream> #include<string> #include<assert....

2017-04-11 11:45:20

阅读数:253

评论数:0

粘滞位(SBIT)

一.什么是粘滞位? 粘滞位(stickybit),又称黏着位,是Linux文件系统权限的一个特殊权限(有三个:SUID,SGID,SBIT)。最常见的用法是在目录(只能是目录,文件无效)上设置粘滞位,如此一来,只有目录内文件的所有者或者root才可以删除或移动文件。如果不为目录设...

2017-03-28 00:27:57

阅读数:460

评论数:0

三子棋的实现

三子棋的实现还是比较简单的,在写代码之前,你先构建一下游戏的架构,这样写的时候思路比较清晰,不容易思想卡克,很容易就完成。再一个,你写的代码并不是孤芳自赏的,而是要拿出来给别人看,别人可以清楚地看懂你的代码,这才是好代码。 我们先来看三子棋的架构如何实现,这就看你的思维逻辑能力了。下面代码很清晰的...

2016-11-24 01:58:27

阅读数:862

评论数:1

有关时间戳的整理

提供一个很好的在线工具网站:https://tool.lu/c/developer 什么是时间戳? Unix时间戳:是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。 获取当前时间戳 Go: import...

2018-04-16 23:13:13

阅读数:4

评论数:0

Unity3D游戏中Android本地推送通知整理

现在手游中出现了越多的定时通知的需求,因为是固定时间推送,所以不需要通过服务器进行推送,只需要利用各个平台自己的本地推送机制就可以实现这个功能。 在Unity3D官方提供的API中,UnityEngine.iOS中有一个类:LocalNotification 它只实现了iOS的本地推送,即仅适...

2018-04-16 23:00:16

阅读数:5

评论数:0

lua常用函数库汇总

lua库函数 assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow.exe打开调试命令)显示对话框以及输出错误调试信息 collectgarbage() - 垃圾收集器. (新增于1.10.1) date(format, time) - 返回当...

2018-04-04 20:57:55

阅读数:3

评论数:0

猜数字游戏(Go实现)

后面会使用Unity3D加上UI package main import ( &quot;fmt&quot; &quot;bufio&quot; &quot;os&quot; &quot;strconv...

2018-04-04 18:57:23

阅读数:6

评论数:0

高可伸缩的游戏服务器架构

水平扩展是高可伸缩的首要条件,因此,在设计之初就必须考虑好水平扩展考方案。事实上这一部分几乎花了我1整个月的时间来设计,在此期间我重写了3版才总算确定下来我认为可用的方案。 第一版设计方案如下: 将服务器分为3类,分别是GateServer, LoginServer, LogicServer。...

2018-03-14 17:15:54

阅读数:19

评论数:0

Lua中常见的数据结构

—————————————-array a = {} –数组大小不确定,可动态增长 for i = 1,1000 do a[i] = 0 end –可以用构造器在创建数组的同时初始化数组: a = {1,2,3,4,4,5,6} —————————————-矩阵和多维数...

2018-03-13 11:52:47

阅读数:15

评论数:0

Lua ——闭包问题

当一个函数被写入另一个函数时,它可以完全访问函数中的局部变量; 这个特征被称为词法范围。虽然这听起来很明显,但事实并非如此。在编程语言中,词法范围界定和一流功能是一个强大的概念,但很少有语言支持该概念。 让我们从一个简单的例子开始。假设你有一个学生姓名列表和一个将姓名与成绩联系起来的表格; 你想...

2018-03-06 14:05:06

阅读数:15

评论数:0

golang defer

在Go中,defer语句用于延迟一个函数或方法(或者当前创建的匿名函数)的执行。它会在外围函数或方法返回之前但是其返回值(有的话)计算之后执行,这样就有可能在函数内部修改函数的命名返回值。 如果一个函数或方法中有多个defer语句,它们会以LIFO(后进先出)的顺序执行。 最常用的用法:...

2018-02-28 13:39:58

阅读数:19

评论数:0

golang channel

&amp;lt;p&amp;gt; Go语言内置了书写并发程序的工具。将go声明放到一个需调用的函数之前,在相同地址空间调用运行这个函数,这样该函数执行时便会作为一个独立的并发线程。这种线程在Go语言中称作goroutine。在这里我要提一下,并发并不总是意味着并行。...

2018-02-27 14:14:47

阅读数:18

评论数:0

golang: string与byte的区别

golang string和[]byte的对比 为啥string和[]byte类型转换需要一定的代价? 为啥内置函数copy会有一种特殊情况copy(dst []byte, src string) int? string和[]byte,底层都是数组,但为什么[]byte比string灵活,拼接性...

2018-02-26 15:44:36

阅读数:36

评论数:0

Go语言中的interface理解

1、interface 是一种类型 首先 interface 是一种类型,从它的定义可以看出来用了 type 关键字,更准确的说 interface 是一种具有一组方法的类型,这些方法定义了 interface 的行为。 go 允许不带任何方法的 interface ,这种类型的 i...

2018-02-26 11:20:13

阅读数:10

评论数:0

海量数据处理(面试题)

1.给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址?! 解题思路:哈希分桶法。 1,将100G文件分到1000个文件中,然后将每个IP地址映射到对应文件(IP地址转换为整数,对文件个数进行取余,然后根据结果放入对应文件,...

2017-08-21 21:16:58

阅读数:144

评论数:0

每日一题——判断二叉树是否平衡,求一棵二叉树的镜像

1,判断一棵二叉树是否平衡 一棵树平衡是指它根节点到叶子节点的最长路径与最短路径只差不超过1。bool IsBanlance(Node* root,int& depth) { if(root == NULL) { depth = 0; re...

2017-08-10 22:04:46

阅读数:132

评论数:0

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