WEB开发网
开发学院手机开发Symbian 开发 Symbian开发入门 阅读

Symbian开发入门

 2010-06-03 23:07:00 来源:WEB开发网   
核心提示:Open(), Create() 或 Initialize()这样的方法,它们用来分配资源,Symbian开发入门(4),设置句柄成员变量的值,并返回错误代码或是产生异常,M类只能有虚(virtual)函数,不能有成员变量和构造方法, R类通常也有对应的Close()或Reset()类,用来释放资源
Open(), Create() 或 Initialize()这样的方法,它们用来分配资源,设置句柄成员变量的值,并返回错误代码或是产生异常。 R类通常也有对应的Close()或Reset()类,用来释放资源,重置句柄的值------表明没有资源和该对象关联。使用R类时,一个常见的错误是忘记调用它的Close()方法(当然,该方法也可以是其它名字,但它经常被命名为Close())或是有一个析构方法释放资源,这会引起资源的泄露。

R类通常都很小,除了资源句柄没有其它的成员变量。因为不需要。它通常也没有析构方法,资源的释放都是在Close()方法中进行的。大多数情况下,R类都是作为类的成员变量或局部变量存在的。只有少数情况下,在堆上创建。

您必须确保,当程序发后异常的时候,资源能被正确地释放------通常是使用资源栈。如果一个R类是一个堆上的自动变量(相对于成员变量),您一但要保证资源被释放,而且,变量本身也要被释放。

R 类的成员变量通常都很简单,所以一般不需要深拷贝(bitwise copy)。R类的拷贝可能会引起混乱(想象一下:如果两个对象同时在一个资源句柄上调用 Close()方法,或两个对象都没有释放资源,会发生什么情况?)如果,您想阻止任何对R类的拷贝,您应当声明(但不定义)一个私有的构造方法和赋值操作。

? M 类

当提到多继承的时候,它意味着从一个主要的类派生,同时也混杂基它类的功能。前缀M是单词Mixin的首字母。Symbian系统不赞成多继承的做法,因为这个引入额外的复杂性,M类是一个抽象类,它的作用相当于java中的接口(interface)。在Symbian系统中,M 类常被用来定义回调接口或者是观察者(observer)类。M类也可以被其它类继承。下面我们给出两个例子。

class MAnimal

{

public:

virtual void EatL() =0;

};

class MDomesticAnimal : public MAnimal

{

public:

virtual void NameL() =0;

};

class CCat : public CBase, public MDomesticAnimal

{

public:

virtual void EatL(){}; // 从MAnimal, 经过MDomesticAnimal继承

virtual void NameL(){}; // 从 MDomesticAnimal继承

// Other functions omitted for clarity

};

上面的例子演示了一个从CBase类和一个M类派生的具体类。而类MDomesticAnimal又是从MAnimal派生的。象接口一样,由于不能被实例化,M类只能有虚(virtual)函数,不能有成员变量和构造方法。但它可以有析构方法,

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:Symbian 开发 入门

编辑录入:coldstar [复制链接] [打 印]
赞助商链接