posts - 58,  comments - 75,  trackbacks - 0
        程序开发其实本质上和语言没有太大的关系,语言是一个实现程序的工具。程序开发,有自己要解决的问题,要高效的开发程序,必须要对这些问题给一个好的解决。这也就是说可以通过很多语言来学习程序开发。不必太拘礼这个问题,可以用丢骰子的方法来解决选择语言的问题。
        推荐语言,C++或JAVA。毕竟是两种非常流行的语言,学好了工作比较好找,毕竟大多数人学这玩意是为了个饭碗。相比下JAVA的市场好像大些(特别是在企业级信息管理市场),工资也比较高。JAVA还有一个好处,就是它的开发范型比较单纯,概念相对好掌握。C++在系统开发方面的优势比较明显,开发的方法灵活,对喜欢自由性格的人比较合适。C++如果能学好,对程序开发的理解将相当的深刻,好像可以达到手中无剑,心中亦无剑的境界(特别是能深刻理解范型开发后)。
        选择一个语言后一定要坚持的用下去,这个样才能大有收获,不要今天说什么好就学两下,明天说什么后就学两下,那样学什么语言也没有用。
posted @ 2007-01-29 22:15 walkspeed 阅读(348) | 评论 (1)编辑 收藏

    接口,通俗的来说就是定义了一组要实现的功能,这些功能被表现为一组函数,
这些函数在语义上给定接口实现类的责任。
    C++中常用的定义接口的方法是纯虚类。但是定义的函数却是要确定操作类型的
但是从接口在语义上的考虑,其实是不需要的。
    用模板技术来改变。
    定义一个接口类,在类中只定义接口函数,这些函数是Client要使用的,这个
类是一个模板类,如下
    template< typename T >
    class Interface
    {
    public:
        template< typename T1 >
        void Fun( const T &t );
   
        ......
    };
    这种方式解决了接口函数被类型限制。
    模板类的参数是一个继承类,这个继承类完成实际的操作。实体类的定义如下
    class C : public Interface< C >
    {
        ......
    };

    子类去一个个的实例话其实很不好,也不符合一般C++的编程方法。由于在模板
编程的情况下,更注重的是语义的符合,所以可以在子类中使用重载的方法去实现对
不同类型的实际处理(毕竟没有类的编写者知道自己这个类要处理的类型)。那么可
以载接口类中写些代码,来调用子类的函数,这种调用实际上在语义上定义了子类要
实现的责任。上面的接口的定义变成下面这个样子
    template< typename T >
    class Interface
    {
    public:
        T* This( void ) { return static_cast< T* >( this ); }

        template< typename T1 >
        void Fun( const T &t )
        {
            this->This()->Ope( t );
        }
   
        ......
    };
   
    这样,子类只用实现对不同类型的处理的Ope函数了,对外的公共接口还是一样的。
显现中要讲基类编程子类的友员,Ope定义在protected或private作用域中。  

posted @ 2007-01-13 18:06 walkspeed 阅读(2279) | 评论 (0)编辑 收藏
        开发方法很多,从大学中学到的瀑布式的工程方法(虽然书中有说别的方法,但其实只讲了这一个方法)。这种将一切问题都确定后,生成文档,在开始编程的方法越来越不适用了。不过我见过的公司里的管理层特喜欢用,特别是那些没有搞过开发,凭着一张嘴的管理出生的管理者。
        世界是变化的,软件要解决的问题也是不断的变化(人是善变的)。
posted @ 2006-12-18 20:51 walkspeed 阅读(257) | 评论 (1)编辑 收藏
    类之间的通讯和定位的封装好是头疼呀。思考了好长时间还是没有什么好的解。
    通讯时的不通参数类型和数量,获得响应的实体类。
    事件,消息,命令。表面上看差不多,妈的私底下又是有差别的,封装不通,传递不通。还有不通的概念定义和解释。
posted @ 2006-10-14 12:20 walkspeed 阅读(218) | 评论 (1)编辑 收藏
    记得在刚开始学习C++的时候,有一条规定,就是在基类中声明的虚函数,在子类中重载时不要改变这个函数的作用域。例如在基类public中声明的虚函数,在其子类中重载时还应该时public的。
    但我在看DirectShow的代码中发现有的子类改变了父类的虚函数的作用域。先开始想,那帮人怎么会犯这么低级的错误,后来一想应该有其原因。在思考后,觉得改变了父类虚函数的作用域是一件很有趣的事情。如果子类的实例被转换成父类,这个函数是可以调用的,而当他是子类时是不行的。
    突然我发现,这样就要了一个层次的关系,在父类一层,何子类一层。当一个用户在不同的层次时,操作的权利是不同的。它起到了某种限制。
呵呵,好精致的玩意。
posted @ 2006-09-15 22:13 walkspeed 阅读(629) | 评论 (2)编辑 收藏

        前两两天才开始研究XVID,下了开源的包,按网上写的方法怎么也没编译过去,后来自己把它编出来了。现在写下来与大家分享。

        VC6下面我是怎么也没编译成功,个人认为在VC6下面是编译不出来的,大家不用再试了。

        我是用VC2003编译出来的。下一个NASM.EXE,放到你的安装目录\Microsoft Visual Studio .NET 2003\Common7\Tools 下面就可以了。

        将所有asm文件命令行中如下的语句
        nasm -f win32 -DPREFIX -o "$(IntDir)"\"$(InputName)".obj "$(InputPath)"
        改为
        nasm -f win32 -DPREFIX -o $(IntDir)\$(InputName).obj $(InputPath)

        将如下语句
        nasm -f win32 -DPREFIX -I"$(InputDir)"\ -o "$(IntDir)"\"$(InputName)".obj "$(InputPath)"
        改为
        nasm -f win32 -DPREFIX -I$(InputDir) -o $(IntDir)\$(InputName).obj $(InputPath)

         编译就ok了

posted @ 2006-06-13 22:41 walkspeed 阅读(2269) | 评论 (7)编辑 收藏
    仿函数就是使对象使用行为看上去像个函数。
    函数的使用是这个样的
    Function(param1,param2,...)
    而对象的使用是这个样的
    Object.memberfunction(param1,param2...)
    而仿函数对象的使用是这个样的
    Object(param1,param2,...)
    这样我们可以看出,从外表上看,仿函数对象和函数是一个东西。呵呵,当然他们是不同的。他们一样不过是在使用的外形上一样罢了。

    一个仿函数类如下定义
    class ObjectFunction
    {
        .......
        public:
            返回的类型 operator() ([param1,param2,...]);
     };

     例1
     class ObjectFunction1
     {
          .......
          public:
              void operator() () { count << "No Param ObjectFuntion" << endl;
      };

      例2
      class ObjectFunction2
      {
           ........
           public:
               bool operator() (int x)
               {
                   count << "Have Param ObjectFuntion" << endl;
                   count << "This is ObjectFuntion's Param" << x << endl;

                   return true;
                }
         }

         仿函数的关键是要实现 operator() 运算符。
     
posted @ 2006-03-23 23:22 walkspeed 阅读(5680) | 评论 (7)编辑 收藏
    仿函数,就是是一个类的使用看上去象一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。
    在我们写代码时有时会发现有些功能的实现的代码,会不断的在不同的成员函数中用到,但是有不好将这些代码单立出来成为一个类的一个成员函数。但是又很想复用这些代码。写一个公共的函数,可以,这是一个解决方法,不过函数用到的一些变量,就可能成为公共的全局变量,再说为了复用这么一片代码,就要单立出一个函数,也不是很好维护。这时就可以用仿函数了,写一个简单类,除了那些维护一个类的成员函数外,就只是实现一个operator(),在类实例化时,就将要用的,非参数的元素传入类中。这样就免去了对一些公共变量的全局化的维护了。又可以使那些代码独立出来,以便下次复用。而起这些仿函数,还可以用关联,聚合,依赖的类之间的关系,于用到他们的类组合在一起,这样有利于资源的管理(这点可能是它相对与函数最显著的有点了)。如果在配合上模板技术和policy编程思想,那就更是威力无穷了,大家可以慢慢的体会。
     在下只是抛砖引玉,希望大家多多指教。
posted @ 2006-03-22 22:15 walkspeed 阅读(787) | 评论 (3)编辑 收藏
仅列出标题
共6页: 1 2 3 4 5 6 

<2007年4月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

常用链接

留言簿(4)

随笔分类(64)

随笔档案(58)

文章分类(3)

文章档案(3)

相册

收藏夹(9)

C++零碎

好友

搜索

  •  

积分与排名

  • 积分 - 158749
  • 排名 - 163

最新评论

阅读排行榜

评论排行榜