• 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/ 
  • 相关阅读:
    IoC就是IoC,不是什么技术,与GoF一样,是一种 设计模式。
    控制反转是Spring框架的核心。
    一种是CI(Constructor Injection)构造方法注入,另一种是SI(Set Injection) set 注入
    IOC 的理解与解释
    java 单例模式5种写法
    AOP(Aspect Oriented Programming),即面向切面编程
    AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题
    ioc和aop的区别?
    JAVA设计模式之单例模式
    详解JNDI的lookup资源引用 java:/comp/env
  • 原文地址:https://www.cnblogs.com/Dah/p/529678.html
  • Copyright © 2020-2023  润新知