C++ 中 union 的使用

我之前总是觉得,10 万行 C++ 代码里,用到一个 union 就不错了(可能比较夸张)。但是现在我突然想到,在一类情况下,union 还是大有用武之地的。

有的时候我们需要直接对二进制数据进行操作,比如将一个结构体的信息保存到一个二进制文件里的时候,或者直接操作一些底层的东西,或者说开发一些底层的协议啥的。在之前我都是用“把结构体指针转换成 char 数组指针”,然后进行的。

阅读全文

C++ 构造函数或析构函数中调用虚函数

在父类的构造函数或析构函数中调用虚函数,调用的不是子类的重载函数,而就是这个类的相应函数。但是如果在父类的其它函数中调用虚函数,会调用到子类的重载函数。

其实这个是很容易理解的,构造函数调用的顺序,是先调用父类的构造函数,再调用子类的构造函数。由于父类的构造函数运行的时候,子类甚至没被初始化,所以不好调用子类的虚函数。反过来看,析构函数是从子类开始调用到父类,父类的析构函数调用的时候,子类已经析构了,这时虚函数也不能够调用子类的。

阅读全文

开源 Android 游戏引擎 libgdx 工程配置

libGdx 是一个开源的 Android 游戏引擎。我也刚开始使用不久,个人觉得这个引擎还是比较轻量级的。之所以接触这个引擎呢,是因为 Java 课的期末项目是一个 Android 程序,我选择用这个引擎写一个华容道游戏,很简单吧。libGdx 有一个优点,就是可以在 PC 上模拟游戏的运行,不需要 Android 模拟器。用过 Android 模拟器的都知道那是慢得……

首先,至少需要一个 Eclipse… 如果想生成 Android 的程序,也就是 apk 文件,那么还需要装 Android SDK.

然后,从 libGdx 的官方网站下载最新版的 libGdx. 目前最新版是 0.9.2 . 具体地说,就是去那个页面把 libgdx-0.9.2.zip 这个文件下下来。然后解压待用。

阅读全文