看了一下VS2005对托管C++的修正

Posted on 2005-02-25 16:08  Aaron@cnblogs  阅读(1105)  评论(0编辑  收藏  举报
原文连接:http://blog.sunmast.com/sunmast/articles/860.aspx

我的一些看法:
用 gcnew 是个好主意。

看到这个比较兴奋:
引用类型在堆栈上 ReferenceType h;
处理Dispose的方式也还不错:
调用Dispose 方法 ReferenceType^ h = gcnew ReferenceType;
delete h;

这个也可以接受:
调用Dispose 方法 ReferenceType^ h = gcnew ReferenceType;
delete h;

但是这样
ref class ReferenceType {};
value class ValueType {};
不见得比
__gc class ReferenceType {};
__value class ValueType {};
高雅。或者说一样垃圾。除非 ref/value 可以省略。对于class 缺省应该是ref,对于 struct缺省应该是 value。

不过最让我感到恼火同时也感到欣慰的是:
public ref class ReferenceType 

    
public
    
// 程序集内部和外部同时可以访问 
    private public
    
// 仅程序集内部可以访问 
    protected public
    
// 程序集外部仅继承了的类型可以访问,内部代码可以直接访问 
}

的确,这样对访问的控制更精确了。。。但是*——#……%—%86

新的box和un-box还是可以接受。新的属性处理的确比原来的好多了。但是
property String^ Name 

    String
^ get() 
    

        
return m_value; 
    }
 
    
void set(String^ value) 
    

        m_value 
= value; 
    }
 
}
 

还是太罗嗦。这个property 本来就是特殊处理。那么Get当然是返回property那行的类型。set的输入参数也肯定是相同的类型。而且也肯定没有返回值。所以,上面的例子完全应该:
property String^ Name 

    
get() 
    

        
return m_value; 
    }
 
    
set() 
    

        m_value 
= value; 
    }
 
}


总体来说,好消息比坏消息多了点。