您的位置:首页 > 编程语言 > C语言/C++

C++ CLI 程序编写注意事项

2008-08-03 06:21 751 查看
最近做了一个C++ CLI的项目,感觉还是有很多注意事项的。现在写下来与大家分享,希望能对大家有所帮助。本文不会讨论更多理论上的东西,只会从实用角度出发,把相关语法内容过一遍。

1) 属性

C++ CLI声明属性,需要使用property关键字。在属性内,需要通过get函数、set函数来设定私有的field值。

千万别忘了,在属性声明结束后要加分号。

使用C#声明属性:

public class A

public class B : public A

protected override void OnPaint(PaintEventArgs pevent)
使用C++ CLI 声明:

public ref class A

public ref class B : public A

private:

EventHandler^ _AxDownloadComplete;

public:

virtual event EventHandler^ AxDownloadComplete

public void GetObject(ref Object o);

使用C++ CLI声明:

public:

GetObject(Object^ % o);

5) 创建对象

在C++ CLI中可以通过new 关键字创建非托管对象。使用gcnew创建托管对象。编译器在编译时会自动检查对象的类型。

6) 实现接口

在C#中,一个类无需显式的继承接口。比如:

public interface ITest

public class MyControl : Control,ITest

public interface class ITest

public ref class Impl : ITest

{

{return a + b;}

};

将实现方法用virtual 关键字修饰,以便编译器能够正确识别该方法为虚方法,将其指向函数的指针放入虚表内。

这就带来一个问题,如果你声明了一个根据System::Windows::Forms::Control类成员的一个接口IControl,然后声明一个类MyControl,该类继承了System::Windows::Forms::Control类和IControl接口。那么,C++编译器将不会认为MyControl类已经实现了IControl接口,而导致大量的编译错误。原因就是System::Windows::Forms::Control类的大部分方法都不是虚方法,C++编译器无法直接把基类的方法放入虚表中实现多态。因此只能自己再将Control类在封装一遍。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: