文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C++框架该如何正确理解

2023-06-17 16:40

关注

本篇文章为大家展示了C++框架该如何正确理解,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

C++编程语言中,有很多比较重要的内容值得我们去深入研究。这些基础内容的理解不但能帮助我们掌握C++,而且还能对其他语言的学习或多或少的有些帮助。

框架,在英文中叫做Framework。应用程序框架就叫做Application Framework。现在是framework满天飞的时候,你没有听过框架,但是你肯定听过.net framework这个词。否则微软的广告就做的太水了。当然,.net framework是为了.net,其实主要是C#来做的,很多同学说,C++也可以啊,用CLR的C++就可以,不过带CLR的C++还是C++吗,而且既然用了CLR,为什么就不干脆来用C#呢?不过这个只是顺便一说,因为我也没有研究过CLR,也没有用过CLR下的C++,没有研究,没有发言权。还是来谈谈C++下面的framework。

首先,要清楚的是没有framework,我们能不能做开发,做应用。想想是可以的哦。在没有framework的时候,我们直接调用函数,完成功能。just simple。

然后没有framework和有framework,到底有什么区别。***的区别就是,没有framework的时候,是我们call函数,而有framework的时候,是framework来call我们。

比较老牌的C++的framework,应该就是MFC了,MFC的全称为Microsoft Foundation Class,也就是微软基础类库,那不还是类库吗?好像没有提到framework啊。不过你细看里面函数的话,可以看到很多函数的前缀为Afx,Af也就是Application Framework了。

那C++的STL,全称为Standard Template Library,也就是标准模板库,它是不是C++框架呢?我们看看它提供了些什么,它提供了字符串类,输入输出流,各种数据结构,以及算法。这些都是在我们的程序中,被我们调用来完成功能的,从我的观点,它不能算是框架,而只是一套类库。

那MFC呢,为什么它算是C++框架呢?首先提起MFC,想到的是什么。应该是界面吧。MFC提供了包括static,editbox,button,radio,list,tree等等控件,但是单单就是界面吗?当我们点击按钮时,它会执行动作。这里面原来还绑定了函数。同时我们在对应的函数中写下比如一个MessageBox,那到时候就会执行,显示出这个消息框。这一切都是MFC在里面做,我们所需要做的,就是拖一个按钮过来,加上对应的Buttonclick事件,然后在对应的函数中加上对应的实现就可以了。

原来framework就是,在我们写我们的软件之前,就将整个的执行流程给我们规定好了,我们在规定的点填空,然后就可以完成应用了。比如我在2009年写一个软件,但是MFC是在2000年(其实不是哈,举例而已)就完成了。它怎么知道我要完成什么,然后再来调用我写的这些函数,最终完成功能。

其实现在一般来实现框架,都是使用了面向对象技术,也就是我们常常听到,听得耳朵都生茧了,其实还没有太明白的运行时绑定,也就是面向对象中封装,继承,多态中的多态行为。但是MFC那时,由于性能的原因,用虚函数比较少,主要用宏(在侯捷老师的书中叫做巨集,其实是一个东西)来完成,不过还是很多地方使用的虚函数。这个看深入浅出MFC来了解具体的原理吧。

作为framework,只需要定义一个superclass,然后你需要实现的时候,继承这个superclass,无论是类,抽象类还是接口,然后实现它,这样framework不需要知道你,它只需要知道superclass就可以运行了。而且是它来调用你。

其实这两天想了一下,除了面向对象之外,我们C系统中用回调函数,其实也就是函数指针,不也是用来实现让其他人来调用,自己来实现被调用的部分吗?哦,其实也就是现在常常提到的控制反转(还是依赖反转)?不过C和C++的世界中,这些名词提得比较少,一下子没有联系起来。

不过MFC完成的东西很多,windows消息的封装,消息映射和消息路由是一部分,同时它也提供了CString等类给我们来使用,还提供了Document-View,还提供了序列化等等东西。

另外有名的C++框架,好像有个重量级的网络开发框架叫ACE的,但是没有了解过,仅仅是知道有这么一个东西。

linux算不算框架,从现在linux的驱动开发,使用模块来进行开发的角度,似乎也可以认为这一套算是一个框架,只要注册了模块,那它就知道,也可以来调用。

另外,有插件机制的软件,算不算框架?

我知道的有插件机制的软件,比较古老的有Winamp,现在的有firefox,以及thunderbird这些Mozilla出的系列软件,eclipse等,这些中eclipse肯定算是框架了,其他呢?

另外C++中,Qt,wXwidget等等,尽管没有用过,但是应该也算是C++框架,而且是跨平台的。

写了一些东西,但是比较的乱,而且可能有些意思也没有表达清楚,有空我还可以再整理整理,问题很大,对于框架,还有很多要去学的。模式都没有学好,也没法去把框架谈好。

上述内容就是C++框架该如何正确理解,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯