zoukankan      html  css  js  c++  java
  • C++! C++! C++! and .NET

    最近重新学习C++, 这东西自从上过这门课后很少用过, 除了数据结构, 算法偶尔用来写写代码段, 都是用C#写程序,  用习惯了.NET的一套完善的框架, 突然要学习使用C++颇有些不习惯, 首先是语法比C#复杂的多, 一本Thinking in C++全部都是在讲语法.. 看了几天也看了一大半, 感觉很爽, 学到了很多原来不知道和不清楚的东东.
    不过标准C++的类库相比.NET BCL的完善程度真不是一个档次的, 获取一个时间需要用到<ctime>或者<windows.h>中的函数, 而.NET中的一个DateTime就能完成所有你想做的事情.

    写代码写的不爽吧,于是乎就想用C++来"做"BCL里的一些类, 先用Win32API的时间API写了个DateTime类, 不过好像也没什么意义吧, 因为GetLocalTime函数本身就返回了一个够用的struct, 但是BLC的DateTime类的其他方法要用C++实现写起来也够累人的.看到member-function-pointer那里, 我又想写个Delegate, 没花多少时间就搞定了基本的功能, 主要用了template, 但用起来还像模像样的哈:
     

        People dap;

        dap.name = "Dap";

        dap.Hungry += People::HungryEventHandler(EatApple);

        dap.Hungry += EatPear; //yep! one dotnet 2.0 feature

        cout << dap.WantToEat();

    .NET的精髓所在是它的managed框架, 如何来实现那个Object类才是最关键的, 在CLR眼里, 它知道每个对象(引用)真正的对象是什么, 类型是什么, 而在C++里, 最通用的只有一个void*, 什么都不知道的指针, 如何去控制一个对象的scope完全都需要程序员来控制. 仅仅从托管这个角度来讲, .NET框架真的是软件开发的一个重大进步, 但为什么用它来开发的人还是比较少呢, 性能是个大问题, 人们都不愿意使用十几甚至几十分钟来下载安装.NET Framework(最新的3.0 RC1有40多M = =#)..Windows Vista也几乎仍然是使用C++开发. .NET是个好东西, 无论从理念还是从到现在类库完善程度来看. 如果几年后电脑的性能完全可以忽略JIT的编译延迟的话. 软件开发首选必然是.NET...

    说着说着就走题了.. 我只是想说我要学C++...

    另外, 无意发现一个使用C++来实现的模拟.NET Framework类库, 叫ACF(Another C++ Framework), 是一个中国人写的, 实现了基本的.NET功能:

  • Basic type system
  • Exceptions
  • Arrays and collections
  • Delegates and events
  • Strings and text
  • I/O
  • Threading
    最新的版本是0.4(作者好像已经有两年没有继续开发了, 介绍中还说这个类库能发挥C++的template特性, 殊不知~咱已经有Generics了). 我已经下了它的Source, 但是Build的过程会有两三处error, 估计是因为VC++编译器版本的问题, 有的地方要加上一个"template<>", 有的地方要注释掉, 这个根据它生成时的错误改就好了. 好东西..研究ing..

    ACF的主页是 http://acfproj.sourceforge.net/ 
查看全文
  • 相关阅读:
    HDU 4024 Dwarven Sniper’s hunting(数学公式 或者是二分)
    二分图最大匹配总结
    HDU 4022 Bombing (STL应用)
    HDU 1847 Good Luck in CET4 Everybody!(组合博弈)
    HDU 1556 Color the ball(树状数组)
    HDU 4023 Game(博弈)
    HDU 1406 完数(水题)
    HDU 4021 24 Puzzle
    Oracle 多表查询优化
    【编程之美】字符串移位包含的问题(续)
  • 原文地址:https://www.cnblogs.com/Dah/p/529678.html
  • Copyright © 2011-2022 走看看