返回介绍

2.4 应用

发布于 2025-02-24 22:44:36 字数 1058 浏览 0 评论 0 收藏 0

然而我们还没有实现一个字符串类,我们仍然做好了一个简单的测试程序的准备。 String.h 定义了抽象数据类型:

extern const void * String;

对于所有的对象,我们的方法都是相似的。我们向内存管理头文件 new.h 中增加在 1.4 部分介绍的声明:

void * (* clone) (const void * self);
int (* differ) (const void * self, const void * b);

size_t sizeOf(const void* self);

前两个源型声明称为选择器,它们在相关的 struct Class 中声明。下面是其应用:

int main ()
{
  void * a = new(String, "a"), * aa = clone(a);
     void * b = new(String, "b");

     printf("sizeOf(a) == %lu/n", (unsigned long)sizeOf(a));
     if (differ(a, b)){
        puts("ok");
     }
     if (differ(a, aa)){
        puts("differ?");
     }
     if (a == aa){
        puts("clone?");
     }
     delete(a), delete(aa), delete(b);
     return 0;
}

我们创建了两个字符串,并且拷贝了其中一份。我们打印出 String 对象所占用的大小 - 并不是对象的控制文本所占用的大小。最终,检查拷贝的对象与对象本身相等,但并不相同,最后再次删除字符串对象。如果所有的程序均以实现,程序的运行结果如下:

sizeOf(a)==8
ok

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文