zoukankan      html  css  js  c++  java
  • C/C++

    1.    栈是CPU提供的功能,分配效率高有硬件支持

    2.    堆是C/C++函数库提供的功能

    3.    C++的难处在于他的很多错误不能被编译器检查出来,他们是只有在程序运行时的时候才能看到效果。

    4.    CWnd是所有窗口类的基类,如同所有的Flex有摸个基类一样,CWnd作为基类还是因为能接受众多的消息类型,每种消息类型都是一种事件(单击事件,双击事件…) CWnd的父类是Ctarget类是最基本的GUI类,然后才是CObject基类。

    5.    CCmdTarget—CCommand Target表明这个基类主要接受的消息类型就是WM_Command这个是命令消息无论有视图还是没有视图的对象都要使用这个消息,而CWnd则是只有视图对象才会使用这个消息。

    6.    ==========================MFC===========================

    7.    Winmain调用的对象是CThread由他负责应用程序的初始化、运行、销毁,实际使用中使用CThread的子类CWinApp这个是有且唯一的对象。

    8.    Windows驱动开发,提供给内核的就是系统定义好的消息(WM_MOUSEMOVE、WM_LBUTTONUP、WN_TIMER、WM_QUIT)

    9.    对于消息,操作系统定义的消息分为从100000000000000000000(20位)-10111111111111111111(20位)为系统定义好的ID编号。1100000000000000(16位)-1111111111111111(16位)为应用程序自己使用的ID,为了保证ID的唯一性,需要用函数动态获得唯一的自定义ID。

    10.  MFC把消息包装成了OnCommand事件。Windows的消息存在路由问题,MFC的映射机制就是让消息根据一定的规则,逐个的尝试寻找正确的消息接收者,都是通过方法的返回值来确定是否找到了正确的方法执行者。当消息根据消息映射机制找到对应的方法后就通过DispatchCmdMsg派发消息到指定的函数去处理。

    11.  一个是继承(:),两个是解析(::)。C++中::是域名解析符。

    12.  C++的类定义和java不同,java直接定义在大括号里面的。但是C++的大括号里面只能写声明不能写实际的内容。所以C++的方法代码要写在大括号的外面,准确的说是在资源.app里面。所以方法的定义就要不同,需要用到解析符号。

    13.  C++开发和java开发的区别

    Java开发大多是完整的项目,至少学习的时候可以找到清晰的逻辑,windows开发是写一个windows基础上的项目,大部分的winodow方法都是实现规定好了调用了的。

    14.  html页面之所以能够根据onclick直接的定位到某一个点,也是因为浏览器单击的页面发送了一个消息,这个消息就是一个事件,被包装成了html(js)的事件。

    15.  C typedef structs和C++ class的区别:

    C的结构只能有数据成员不能有方法,c中方法都是全局的,都是在一个层面的(public)的东西,所有的方法都属于main,只有数据可以属于struts。因为产权明确,所以简单,但是不符合实际情况。

    C++是现实的模拟是子孙式的,每个class不仅有自己的数据还有自己的方法,方法还可以是私有的。

    16.  windows的%errorlevel%0表示成功是c语言的特性继承过来的。

    17.  网络模块的核心在软件不再硬件,网络模块的作用是通讯,晶体管和单片机也需要通讯,区别在于这种通讯是平面的,是电流的简单交换,只是网络通讯的一个层次(物理层),而网络通讯因为要面向上层提供服务,所以有更复杂的抽象,如同单片机至操作系统核心的跃迁。不同的硬件有不同的硬件电路,但是他们都要被抽象成一个统一的接口。如果单片机通讯1cm,操作系统高度5cm,那么网络通讯的高度也是5cm,也只有这样才能给操作系统和更高层的服务提供服务。

    18.  现在硬件和原来硬件在性能上有了提升。

    19.  相同的硬件如同道路,而不同的操作系统才是整整的摩托车和汽车。这么多年虽然硬件在升级,路从石头路变成了柏油路但本质上差别不大,但操作系统从摩托编程汽车,变化却不小。

    20.  C++比C高级的地方在于C++让你忽略你可以忽略的,因为不容易分散注意力能更好的专注业务,C则是让你很难忽略某些东西故全靠你自己主动的忽略了。C++是把高级程序开发的原则体现在了代码里面。所以你可以通过遵守C++的预防就能预防很多C需要主动忽略注意的东西。如同汉武帝指定很多规则就是为了让后人有章可循,也就能站在更高的高度去使用,去杜绝问题。和国家发展过程中积累很多的民俗法律相似。所以了解了国家的法律,就知道国民经常犯什么错了。理解了java的语法就知道c/C++容易犯的错了。

    21.  C++的CCmd等类能够接受什么消息是Declare_message宏来定义的,这个宏决定程序能接受什么消息。

    22.  Windows 的消息类型非常多,如果每个都进行写入类就太麻烦了,但是可以定义一个父类CCommandTarget好处就是设计的时候只需要定义对象要执行的方法,具体怎么执行由程序员确定。同样,编译的时候也可以具体的找程序去执行,可以让事情不需要一开始就确定的。只要不要求一开始所有都确定就是拓展性了。这就是框架的作用了。我们开发项目也是开始的框架搭好了就好拓展了。面向对象搭建了一个好的框架。

    23.  C++是通过virtual关键字来实现动态绑定的,没有virtual的就是静态绑定,而java全部是动态绑定。

    24.  C代码在运行时期,只是执行代码,不再进行逻辑的判断,而C++的虚函数则是让代码在运行期也加入了逻辑判断,所以好处就是程序的表达可以更简洁。C如同一个没有社会经验的机器人,做事情要完全清楚的全部描述清楚。而C++如同一个有社会经验的正常人,他可以根据语言的描述具体的分析你指的什么东西,然后分析。这个分析是根据经验的逻辑表,信息的获取和选择都是自动完成的。

    25.  C++创建对象不需要new因为C++的引用如同电视剧上的按钮,只要声明就一定有一个对象和他对应。而java则更像是一个遥控器,所有有一个遥控器不一定有对象和他对应,必须有一个new 确定的对象和遥控器对应。

    26.  高级语言就是做好了分工,c语言的编程者需要造一个完整的汽车,而C++则是由运行时候来装配汽车,有C++程序员编写逻辑就可以了,因为有了分工当然也就提高了效率。当然这是有个曲线的,小的东西还是单独来效率高,大的东西分工才会带来高效率。Java的面向切面就是分工的另一种表现,还是由编译器负责装配。这样的好处就是实现了更大的模块化。程序开发的时候只需要设计好一定的模块,而模块的装配是由机器自动负责的。

    27.  高级语言的特点就是上下文,java方法可以有同样的名字,但是参数列表和返回值以及方法名共同构成了上下文,执行一个方法时,程序会自动的根据这三个上下文建立起一张表,根据表的类型来查找确定方法的唯一ID,这个判断就是自动查找数据库的过程。

    28.  this关键字也是自动根据上下文判断的。

    29.  之所以高级语言需要大量的根据上下文判断,是因为人的思维就是习惯大量的根据上下文判断,而不是任何事情都说的非常吃力。

    30.  内存是有cpu直接驱动的,而cpu是程序直接操作的,所以操作系统里cpu和内存是不需要驱动的。

    31.  访问控制符是为了分工的需要是为了让各个模块能不修改链接点的情况下升级模块。相当于定义一个USB接口,接口保持不变,其余可以变。正是访问控制符为模块添加了边界,区分了内外,从而让软件的模块更像硬件的模块。C则是没有边界没有内外,至小无内,至大无外的,虽然这更接近哲学上的高度,但是脱离生活就太多了。C++等离哲学远了也就离世俗近了。这也是个曲线问题。C如水本身无形,到哪里哪里成型,所以他的作用强大,但是他缺对人的要求很高,用的好就好,用的不好后患无穷。太灵活意味着要求更高。

  • 相关阅读:
    位集合
    多线程进行http请求
    mysql--测试前缀索引能否用于order by 或者 group by
    用mysql触发器实现log记录
    源码安装mysql
    C语言:void指针
    C语言:枚举类型
    C语言:结构体与数组
    C语言:联合变量
    Linux 基础入门
  • 原文地址:https://www.cnblogs.com/zhanghaiyublog/p/3583331.html
Copyright © 2011-2022 走看看