Posts tagged ‘C++’

标记待实现功能

有时为了快速的把代码的架子搭起来,并编译通过。会把一些负责具体实现细节的方法先空置。整个代码能编译通过后,再一边调试一边把那些空方法“填”好。

我一般是在这类空方法中加一个注释进行标注, 并让方法直接返回一个错误值。比如返回指针的方法就让它返回NULL,返回BOOL值的方法就让它返回false。有时还会在方法里放一个失败的断言,比如:

BOOL some_function()
{
   //PK Not implement yet
   assert(false);
   return FALSE;
}

Continue reading ‘标记待实现功能’ »

Rcite – 一个英语学习辅助软件

原始发布日期:2007年03月10日 星期六 15:54

该程序的UI部分使用了WTL7.5。WTL7.5可以很容易的在微软的官方网站找到,安装也很简单。

另外使用了BOOST库中的部分内容。包括filesystem用于操作文件名和目录,可以在(http://lunatic.bokee.com/的“技术类”“文件、目录及相应的目录字符串的处理”)找到更详细的介绍。serialization用于将对象序列化在磁盘文件中。datetime用于做日期的计算。还用到了string algo做简单的字符串操作。因此你需要从(http://www.boost.org)下载boost的最新版本1.33.1,并在本地编译它。

Continue reading ‘Rcite – 一个英语学习辅助软件’ »

C++对象布局及多态实现的探索(十三)

原始发布日期:2005年12月1日 星期四 22:06

代码中所定义类的简单说明

Continue reading ‘C++对象布局及多态实现的探索(十三)’ »

C++对象布局及多态实现的探索(十二)

原始发布日期:2005年11月29日 星期二 20:43

后记

结合前面的讨论,我们可以看到,只要牵涉到了虚继承,在访问父类的成员变量时生成的代码相当的低效,需要通过很多间接的计算来定位成员变量的地址。在指针类型转换,动态转型,及虚函数调用时,也需要生成很多额外的代码来调整this指针。象前一篇中对C170对象的obj.foo()和obj.f170()两次调用,传递到两个函数中的this指针居然是不一样的。

Continue reading ‘C++对象布局及多态实现的探索(十二)’ »

C++对象布局及多态实现的探索(十一)

原始发布日期:2005年11月28日 星期一 22:15

菱形结构的虚继承(3)

最后我们看看,如果在上篇例子的基础上,子类及左、右父类都各自定义了自己的虚函数,这时的情况又会怎样。

Continue reading ‘C++对象布局及多态实现的探索(十一)’ »

C++对象布局及多态实现的探索(十)

原始发布日期:2005年11月27日 星期日 20:26

菱形结构的虚继承(2)

我们再看一个例子,这个例子的继承结构和上一篇中是一样的,也是菱形结构。不同的是,每一个类都重写了顶层类声明的虚函数。代码如下:

Continue reading ‘C++对象布局及多态实现的探索(十)’ »

C++对象布局及多态实现的探索(九)

原始发布日期:2005年11月2日 星期三 22:39

菱形结构的虚继承

这次我们看看菱形结构的虚继承。虚继承的引入本就是为了解决复杂结构的继承体系问题。上一篇我们在讨论虚继承时用的是一个简单的继承结构,只是为了打个铺垫。

我们先看看这几个类,这是一个典型的菱形继承结构。C100和C101通过虚继承共享同一个父类C041。C110则从C100和C101多重继承而来。

Continue reading ‘C++对象布局及多态实现的探索(九)’ »

C++对象布局及多态实现的探索(八)

原始发布日期:2005年10月28日, 星期五 23:18

普通的虚继承

下面我们来看虚继承。首先看看这C020类,它从C010虚继承:

Continue reading ‘C++对象布局及多态实现的探索(八)’ »

C++对象布局及多态实现的探索(七)

原始发布日期:2005年10月27日 星期四 22:48

构造函数中的虚成员函数调用

在构造函数中调用虚成员函数,虽然这是个不很常用的技术,但研究一下可以加深对虚函数机制及对象构造过程的理解。这个问题也和一般直观上的认识有所差异。先看看下面的两个类定义。

Continue reading ‘C++对象布局及多态实现的探索(七)’ »

C++对象布局及多态实现的探索(六)

原始发布日期:2005年10月25日, 星期二 21:27

虚函数调用

我们再看看虚成员函数的调用。类C041中含有虚成员函数,它的定义如下:

struct C041
{
    C041() : c_(0x01) {}
    virtual void foo() { c_ = 0x02; }
    char c_;
};

Continue reading ‘C++对象布局及多态实现的探索(六)’ »