8.9 C++(www.cppentry.com)/CLI编程(www.cppentry.com)
虽然我们可以像定义本地C++(www.cppentry.com)类那样以相同的方式定义引用类中的析构函数,但多数时候却是不必要的。不过,我们在第9章将再次介绍有关引用类析构函数的主题。我们也可以调用delete运算符来删除引用类的句柄,但通常也是不必要的,因为垃圾回收器将自动删除不需要的对象。
C++(www.cppentry.com)/CLI类支持运算符的重载,但它和本地C++(www.cppentry.com)类有一些区别应该掌握。首先是C++(www.cppentry.com)/CLI类与本地C++(www.cppentry.com)类中运算符重载之间的基本区别。有两个区别前面已经介绍过。决不能在数值类中重载赋值运算符,因为将数值类对象赋值给另一个同类对象的过程已经被定义为一个成员一个成员地进行复制,这一点不能改变。前面还提到,与本地类不同,引用类没有默认的赋值运算符,如果我们需要以赋值运算符来处理引用类对象,则必须实现适当的函数。另一个与本地C++(www.cppentry.com)类的区别是,C++(www.cppentry.com)/CLI类中实现运算符重载的函数可以是类的静态成员,也可以是实例成员。这意味着除了在本地C++(www.cppentry.com)的上下文中看到的运算符函数可以是带一个形参的实例函数或带两个形参的非成员函数这两种可能性以外,我们在C++(www.cppentry.com)/CLI类中还可以选择以带两个形参的静态成员函数的形式实现二元运算符。同样,在C++(www.cppentry.com)/CLI中可以将前缀一元运算符实现为不带形参的静态成员函数。最后,虽然本地C++(www.cppentry.com)允许重载new运算符,但是在C++(www.cppentry.com)/CLI类中我们却不能重载gcnew运算符。
下面看几个具体的例子,首先从数值类开始。