slice中的类-摘抄

本文详细解析了ICE中类与接口的概念及应用,探讨了两者之间的区别,包括成员变量、行为支持、继承特性等,并介绍了类的继承语法及其实现语义。此外,还对比了类与结构的不同之处,以及如何根据性能需求选择合适的数据结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

除了接口ice还允许定义类,类与接口区别在与它可以拥有成员,与结构的区别在于它可以拥有行为。类支持集成,因此是多态的。

• 简单类
class test{
string name;
void sayhello();
}
能够使用结构的地方都可以使用类,但是从性能上考虑,如果结构够用了就请尽量使用结构。


• 类的继承
使用extends关键字,派生类不能重新定义基类的数据成员

• 类的继承语义
如果客户端和服务端都理解一个实例的基类和派生类,当客户端需要传回是基类时,服务器端传回了派生类,此时客户端也会得到派生类,但当客户端只连接了基类没有链接派生类时,客户端会把这个这个派生类切回基类。

• 自引用类
class Link{
string value;
Link next;
};

interface Link{
string getValue();
Link* getNext();
};
之间的区别

Link*是指返回的是Link的代理,它代表了某个地方的对象,如果你调用返回值的getValue方法,可能是某个servant会收到你的请求并返回给你一个值,对于代理而言他是存在它的服务器进程中的,我们是通过远程调用访问了这个对象的状态。

而在class Link中 next是一个数据成员,它是一个本地实例的值,不能代表另外地址空间中的对象。这意味着我们的队列链是在当前地址空间的,读取某个值是对当前地址空间的操作。

• 类Vs结构
类比结构:
类支持继承,类可以自引用,类可以有操作,类可以实现接口,类的这些额外的特性带来实现上的代价,无论是生成代码的尺寸还是运行时消耗的内存和cpu的周期数量。所以使用结构你可以使程序有更好的性能和使用更少的内存。

• 有操作的类
类上的操作总是在调用者的地址空间中执行,也就是说类的操作时本地操作。

• 类在构架上的影响
没有继承、只有数据成员的类不会带来构架问题。
一旦你使用了有操作的类,你实际上就是使用客户端原生代码,因此你能够再享受到接口提供的实现透明性。当你能够控制部署环境是你应该使用有操作的类,如果不是这样你最好使用接口或者没有操作的类。

• 实现接口的类
通过implements实现接口

类型ID
以全局::起头,加上你module的类型::module,加上自身名字结束。


Object上的操作
Ice_ping操作,测试对象是否可以到达
Ice_isA
Ice_ids

本地类型
任何slice定义都可以有local修饰符。如果用local修饰,slice编译器不会为相应类型生成整编代码。本地类型永远不能被远地访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值