兄弟们,我怀疑我已经“Qt依赖症”晚期了。
当年刚学C++的时候,天天想着写游戏引擎、写底层、写算法,结果一脚踏进Qt的大门,从此再也没出来过。
现在一看招聘网站,看到“纯C++开发工程师”五个字,手心就开始出汗。
Qt:曾经的救星,如今的温柔陷阱
刚开始用Qt那会儿,感觉这玩意儿简直是上帝送来的礼物——
信号槽一连,UI一拖,事件一绑,内存都帮我管好了。
不用写指针,不用考虑释放,不用管多线程锁,一切都那么优雅又丝滑。
写了几年之后,我才意识到——
这丝滑,其实是因为 Qt 帮我包得太严实了。
现在让我写个原生 C++ 程序?我连std::thread怎么启动都得查文档。
(别笑,我真的查过。)
Qt帮我养成的坏习惯
容器一律Q开头,不认std那套。
什么QList、QMap、QString,那叫一个顺手。
结果看别人写的std::vector<std::pair<int, std::string>>,
我一脸懵:“这玩意能直接append()吗?”信号槽机制让我彻底忘了函数指针是啥。
以前面试还会写个函数指针回调,现在一看就头晕。
Qt的信号槽一用十年,函数指针、lambda、模板都被我扔回C++98了。内存自动释放太香了。
QObject的parent-child机制简直是人生救星。
我甚至有一段时间以为“内存泄漏”已经被人类解决了。
直到我写了个纯C++项目,new完对象忘记delete,
程序一晚上就给我吃掉了8个G内存。
我现在的状态:Qt写得飞起,C++吓得要死
同事问我:“要不要换换口味,去做点底层C++的项目?”
我:“不不不,我怕moc不在,我活不下去。”
有时候打开别人的C++代码仓库,看见满屏的:
std::unique_ptr std::moveconstexpremplace_backdecltype(auto)我感觉自己像个原始人第一次见火。
——“这都啥语法啊?我咋都没用过?!”
现实残酷但也搞笑
现在的我,写Qt界面是手到擒来,
连QPainter都能当作画布随便玩;
但让我写个Linux后端服务,我就只能尴尬笑。
投简历时那句“精通C++”也不敢再打勾了,
生怕面试官问我:“你知道右值引用吗?”
我只能硬挤出一句:“我用Qt的引用挺多的……”
反思一下:不是Qt的问题,是我太舒服了
其实Qt没错,
它是个让C++变好用的神奇框架,
问题在于我用Qt太久,已经被它宠坏了。
以前我追求的是“搞定功能”;
现在我得重新学会“理解语言”。
得重新认识那个我早已忘了的C++世界。