最近在看Lippman的《Inside the c++ object model》,书中Lippman说有人发邮件问了他一个问题。

1
2
3
4
5
6
class X {};

class Y : public virtual X{};
class Z: public virtual X{};

class A:public Y, public Z{};

根据以上定义,使用sizeof运算符分别计算类X,Y,Z,A的所占大小。

阅读全文 »

在C语言中,data和function是独立的entity,换句话说data和function是没有直接关联的。所以说使用C编程是面向过程编程,使用一个个的function来操作外在的data。而在C++中,通过Class将data和function集合在一起,形成一个Object。通过面向对象编程的三大特点:1)封装2)继承3)多态 来实现更好的灵活性。

阅读全文 »

最近在重构代码的时候遇到一个WPF相关的问题,在使用MVVM pattern时,给WPF RadioButton建立绑定数据源时,理所当然的想到使用boolean类型。但是发生了一个奇怪的现象。废话不多说,直接上sample 代码。

阅读全文 »

一个bug引起的思考

最近碰到一个bug,是在一个log模块,在使用vsprintf_s函数时发生access deny错误。奇怪的是在Debug模式下没有问题,切换到Release模式下就会重现。我把问题简单化后的代码如下:

阅读全文 »

最近遇到一个lua上问题:在一个c++工程中(进程A),执行lua脚本,由该脚本去启动一个另外的进程B。在lua脚本执行完毕时,在C++工程中调用lua_close来退出lua环境时,线程stuck在该函数中。

阅读全文 »