当前位置: 首页 > news >正文

【听听iecne怎么说】C++技术的发展趋势, MFC过时了吗?QT呢?

在这里插入图片描述


iecne


🧛‍♂️iecne个人主页:iecne的学习日志
💡每天关注iecne的作品,一起进步
💪学C++必看iecne
本文专栏:【听听iecne怎么说】
🐳希望大家多多支持🥰一起进步呀!


✨前言

哈喽大家好,我是iecne,本期为大家带来的是【听听iecne怎么说】C++技术的发展趋势, MFC过时了吗?QT呢? 包教包会,快来看看吧!

有一位粉丝私信i哥,说需要更新一下MFC、QT、EasyX、以及C#的对比
在这里插入图片描述
所以今天iecne就细说一下C++的发展趋势,让大家更加了解MFC QT EasyX和C#如何选择

在这里插入图片描述


文章目录

  • ✨前言
  • 一.EasyX
  • 二.C#
  • 三.MFC vs QT
    • 3.1 QT
    • 3.2 MFC
    • 3.3 两者对比
  • 四.听听iecne怎么说
    • 4.1 小段总结
    • 4.2 管理系统
  • ✨总结
    • ![iecne](https://img-blog.csdnimg.cn/8727b463932d44b2acd7b0fb454a41c5.png =200x)


一.EasyX

首先我们来说说什么是EasyX

EasyX全名 EasyX Graphics Library。 EasyX Graphics Library是针对 Visual C++ 的免费绘图库,支持 VC6.0 ~ VC2022,简单易用,学习成本极低,应用领域广泛。目前已有许多大学将 EasyX 应用在教学当中

EasyX 含有一些简单的函数集合,几乎不用学习,直接翻看参考手册就可以直接使用

EasyX 是针对 C++ 的图形库,可以帮助 C/C++ 初学者快速上手图形和游戏编程。

比如,可以基于 EasyX 图形库很快的用几何图形画一个房子,或者一辆移动的小车,可以编写俄罗斯方块、贪吃蛇、黑白棋等小游戏,可以练习图形学的各种算法,等等。

许多人学编程都是从 C 语言入门的,而现状是:

  1. 有些学校以 Turbo C 为环境学习 C 语言,只是 Turbo C 实在太老了,复制粘贴都很不方便。

  2. 有些学校直接拿 VC 来讲 C 语言,因为 VC 的编辑和调试环境都很优秀,并且 VC 有适合教学的免费版本。可惜在 VC 里面只能做一些文字性的练习题,想画条直线或一个圆都很难,例如需要注册窗口类、建消息循环等等,初学者会受严重打击的。初学编程想要绘图就得用 TC,很是无奈。

  3. 还有计算机图形学,这门课程的重点是绘图算法,而不是 Windows 编程。所以,许多老师不得不用 TC 教学,因为 Windows 绘图太复杂了,会偏离教学的重点。新的图形学的书有不少是用的 OpenGL,可是门槛依然很高。

所以, VC 方便的开发平台和 TC 简单的绘图功能,于是就有了这个 EasyX 库。如果您刚开始学 C 语言,或者您是一位教 C 语言的老师,再或者您在教计算机图形学,那么这个库一定会让您兴奋的

这里放一段EasyX的代码:

#include<stdio.h>
//1.包含图形库头文件,就能使用提供给我的函数
#include<graphics.h>

int main()
{
	//2.创建一个窗口,确定窗口大小,show_console(显现控制台)
	initgraph(640, 640, SHOWCONSOLE);
	//设置背景颜色,one,two两步才能设置背景颜色,位置不能颠倒
	setbkcolor(RGB(255,128,192));//one,设置背景颜色
	cleardevice();//two,清屏,初始化,清楚原来背景的黑色

	setfillcolor(YELLOW);//设置填充颜色-黄色
	setfillstyle(BS_HATCHED, HS_DIAGCROSS);//设置填充模式,自定义填充,交叉网
	setlinecolor(RED);//设置线的颜色-红色
	setlinestyle(PS_SOLID, 2);//设置线的模式为虚线,粗细为两个像素

	rectangle(200, 100, 400, 200);
	fillrectangle(200, 250, 400, 350);
	solidrectangle(200, 400, 400, 500);

	/*setbkcolor(GREEN);//重新设个背景色,更显著
	clearrectangle(300, 250,500, 350);
	clearrectangle(300, 400,500, 500);*/
	

	getchar();
	//2.1关闭窗口
	closegraph();

	return 0;
}

效果:

在这里插入图片描述

相对来说,EasyX还是很简单的,但是太基础了,如果要开发稍微难一点点的还是需要用到其他的


二.C#

C#不多说,这里iecne有一篇文章是:猿创征文|【听听iecne怎么说】C语言 vs Cpp vs C# 有何区别?

链接如下:
iecne好文:【听听iecne怎么说】C语言 vs Cpp vs C# 有何区别?

这边截取一小段:

C#是个新来的孩子,并不是所有人都能适合,C#是微软公司2000年发布的一种由C和C++衍生出来的面向对象的编程语言、运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言

在这里插入图片描述

C#比两者都慢很多,但是强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发与WEB发开的首选语言

他的语法和Java非常的相似,大部分初学者很难理解面类对象的意义。

C#也十分易用,由于其高级丰富的库。
C#通常适用于WEB开发,Win应用,游戏开发等


三.MFC vs QT

3.1 QT

QT应该是我们的老熟人了,不多说

Qt 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程

Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。 Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件之间的协同工作变得十分简单

在这里插入图片描述


3.2 MFC

在当今基于C++的图形界面开发领域,能与Qt相抗衡的只有MFC。MFC是微软公司的基础类库,自然得天独厚,比如开发深层次的Windows应用远超Qt,但Qt也有杀手锏,那就是跨平台。这两点大家一目了然,下面我们再来比较一下它们的其他特点。

这也是一个C++的库,MFC(Microsoft Foundation Classes),是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类


3.3 两者对比

开发速度就整体而言,MFC可能会快捷一些,因为Windows平台的开发工具大多很智能,因为立足于Windows的开发人群很广,从菜鸟到专业人士(开发人员一多,技术参考就多,周围可以咨询问题的人就多)。

相比较而言,Qt基于Linux,可用的开发工具不多,而且这些工具大都比较专业,多是第三方的产品,加上这些工具的集成度不高,支持的第三方库也没有支持MFC的第三方库多,因而从这一点看MFC略胜一筹。不过,Qt自从被诺基亚公司收购后,官方发布了跨平台集成开发环境QtCreator,之后的走向就不好说。

在这里插入图片描述

总体感觉就是Qt Creator和VS差距比较大,还需要改进。从库本身来说,Qt集成的功能比MFC庞大,而且使用的封装技术(信号/槽)倍受赞许,比如Qt Script为Qt提供了嵌入式脚本,Qt界面库支持CSS,所以Qt构建出来的界面比MFC要好,且实现过程也比较容易。

为了降低使用Windows SDK开发的难度以及提高使用Windows SDK开发的效率,MFC采用的是浅层封装(最新的2008 sp1加入了BCG的高级界面库,可能有所改)Windows SDK。这个方面相比而言,Qt库比MFC优秀。

不过,这两个库久经考验,稳定性都很高,几乎没有什么Bug。

运行效率MFC采用浅层封装,运行效率比较高,加上VC对Windows进行了针对性的优化,因而整体性能是比较高的,但是如果加入第三方库就不敢保证整体的高性能了。Qt库比较庞大,封装层次较深,所以运行效率比MFC低,不过在如今主流计算机系统的配置下人们不太会介意这点性能差别了

在这里插入图片描述

MFC无法创建大小动态可变的子窗口,必须重新手动修改代码来改变窗口的位置(这恰好解释了为什么windows里的dialog是不可以改变的)这个问题在软件进行国际化翻译的时候更加严重,因为许多国家表达相同意思需要更长的词汇和句子,必须要对每个语言的版本重新修改自己的软件

在Qt中,任何东西都可以手动的敲出来,因为它很简单:为了得到一个button,可以这样些

button = new PushButton( “buttonName”, MyParentName );

个人感觉QT会更简单一些,这些还是得看大家自己的感受


四.听听iecne怎么说

综上所述,如果你C#、EasyX、MFC、QT都会,首先淘汰的是EasyX

4.1 小段总结

我总结一下,首先,mfc的封装并不是很好,只能说是简化了win32的开发,如果了解mfc发展史的就知道,微软的mfc框架其实易用性很差。开始学习MFC,看上去代码量很像少了点,但理解起来更困难了

目前,如果追求gui性能,c++仍然是不二之选,当然C#也不错


4.2 管理系统

最后我们结合一下粉丝的实际环境——管理系统

一般来说,数据库管理系统开发语言要求包括**SQL、Javascript / Node.js、PHP、Python、Java、C++和C#**六个主要方面

C++和C#都是微软公司开发的高性能编程语言。对于数据库开发人员来说学习C++或者C#能够帮助他们实现高性能的数据库应用



✨总结

总结一下,在这里作者推荐QT和C#作者太菜不喜勿喷,最终运用哪个还是得看自己

本节课主要是写了一些杂谈,至此该课示例的思想博主已经分享完了,相信大家对这个逻辑有了一定的理解,大家可以自己动手敲敲代码,感受一下,包教包会。若有任何侵权和不妥之处,请私信于我,定积极配合处理,看到必回!!!

帅的人已然点赞收藏关注,而丑的人还在犹豫,被犹豫了,快三连吧!
原创不易,还希望各位大佬支持一下
点赞,你的认可是我创作的动力!
收藏,你的青睐是我努力的方向!
评论,你的意见是我进步的财富!

iecne

感谢每一个观看本篇文章的朋友,更多精彩敬请期待~( ̄▽ ̄~)~:
iecne的博客
若有任何侵权和不妥之处,请私信于我,定积极配合处理,看到必回!!!

iecne

相关文章:

  • C++1-C语言和C++的区别
  • iOS开发 - NSTimer极限使用
  • 【电商】电商后台设计—售后流程
  • 2022:【例4.7】最小n值
  • CDH 08Cloudera Manager freeIPAKerberos安装配置
  • steam搬砖基础分析
  • PMP每日一练 | 考试不迷路-9.24(包含敏捷+多选)
  • 重写,重载,重定义习题
  • 8-Arm PEG-Acrylate,8-Arm PEG-AC,八臂-聚乙二醇-丙烯酸酯长期供应
  • qt 构建路径设置
  • 2022-09-23 答辩准备
  • 网课搜题接口API
  • Golang操作ES
  • Activity在Create阶段做的你不知道的事看源码
  • java编写一个程序,生成0~9之间的100个随机数字并且统计每一个数字的产生次数。
  • Android组件 - 收藏集 - 掘金
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • CSS相对定位
  • Hexo+码云+git快速搭建免费的静态Blog
  • Iterator 和 for...of 循环
  • Node 版本管理
  • PHP 7 修改了什么呢 -- 2
  • Rancher如何对接Ceph-RBD块存储
  • Vue全家桶实现一个Web App
  • 记录一下第一次使用npm
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 如何利用MongoDB打造TOP榜小程序
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 提醒我喝水chrome插件开发指南
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 7行Python代码的人脸识别
  • 从如何停掉 Promise 链说起
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​io --- 处理流的核心工具​
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #考研#计算机文化知识1(局域网及网络互联)
  • (003)SlickEdit Unity的补全
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (转)VC++中ondraw在什么时候调用的
  • **CI中自动类加载的用法总结
  • .libPaths()设置包加载目录
  • .NET Core WebAPI中封装Swagger配置
  • .net 获取url的方法
  • .Net8 Blazor 尝鲜
  • .NET分布式缓存Memcached从入门到实战
  • .NET和.COM和.CN域名区别
  • .NET面试题(二)