从Vc++2003到Vc++2005

今天我从微软的网站上下载了一个试用版的VC++2005。体验了一下,感觉很迷茫。

最开始,用VC2005打开VC2003的工程,发现编译出错,没有办法,只有一边看.net SDK中的VC2005语言参考,有一边调整,调整的地方之多,以致于我都不敢在把这个升级后类库用于工程当中,怕还有什么bug。

我整理了一部分,将其列出,供后来者参考:

  1. VC2005不再支持__gc,__value关键字
    如:
    在VC2003中声明类:
    public __gc class class1{};
    在VC2005中声明类:
    public ref class class1{};

    在VC2003中声明结构:
    public __value struct struct1{};
    在VC2005中声明结构:
    public value struct struct1{};
  2. 在VC2005中,ref类型和value类型只能在堆上创建,相对于VC2003做了更加严格的限制
    在VC2003中,引用类型声明:
    class1 __gc* cls1 = __gc new class1;

    在VC2005中的声明方式为:
    class1 ^ cls1 = gcnew class1;
  3. 在VC2005中,数组的声明感觉更加明显(STL的影子在里面更加明显,个人觉得这种模式比较合理)
    在VC2003中,数组的声明方式为:
    int i __gc[] = new int __gc[4];

    在VC2005中的声明方式为:
    array^ i = gcnew array(4);
  4. 对空值的表示方式有了变化(我不知道这个变化是好还是坏,毕竟个人的能力有限)
    在VC2003中,空值的表示方式为:
    class1 __gc* cls1 = 0;

    在VC2005中的表示方式为:
    class1 ^ cls1 = nullptr;
  5. VC2005不再支持__property(我认为这点的变化很大,这让C++看起来不再像C++,还是个人的能力有限,不能辩其究竟)
    在VC2003中,属性的声明方式:
    __property int get_X(){...}
    __property void set_X(){...}

    在VC2005中,属性的声明方式(和C#很相似)
    property int X{
      int get(){..}
      void set(int value){..}
    }

        .......真不知道这些变化是在什么样的理论知道下进行的,是商业目的,还是技术的进化,还是构架升级所必须,谁能告诉我?

 

你可能感兴趣的:(从Vc++2003到Vc++2005)