文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
2.4 应用
然而我们还没有实现一个字符串类,我们仍然做好了一个简单的测试程序的准备。 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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论