2025年09月06日
C与C++两个关系亲密的编程语言,它们本质上是两中语言,只是C++语言设计时要求尽可能的兼容C语言特性,因此C语言中99%以上的功能都可以使用C++完成。本文探讨那些存在于C语言中的特性,但是在C++中缺失或者表现出不同行为的特性。了解这些特性能让你更深入地理解这两个语言,但是,本文中所罗列的每一项特性都不是建议你在程序开发中采用的技巧,而恰恰相反是应该避免使用的特性。为了你的代码可读性更好,移植性更强,请不要在你的代码中的任何地方秀出这样的特性。了解它是为了更好地避免她。
2025年09月06日
malloc 和 free是C语言中的库函数,在C++的应用中使用会产生问题,原因在于它们太简单:他们不知道构造函数和析构函数。
2025年09月06日
c++中移动语义std:move()定义:
template <class T>
typename remove_reference<T>::type&& move (T&& arg) noexcept {
return static_cast<remove_reference<decltype(arg)>::type&&>(arg);
}2025年09月06日
上文还是三天前写的,这两天连着两个晚上都在追踪一个Bug。程序运行、退出都正常,但是打开特定编译开关后,提示Warning: Thread Sanitizer: data race。程序员是不会容忍代码中有任何隐患存在的。说句题外话,写代码都会遇到Bug(Linux的发明者说过,没有人可以一下子就写出没有bug的代码,除了他自己)。估计没有多少人会喜欢Bug。其实我认为排除Bug是一件非常有趣的事,而且可以学到不少的东西,通常Bug都是来自于我们之前某个方面的错误认知,“唉,原来它是这样的,我一直以为是那样的”,不断地修正我们的认知,才能让我们高效地写出优秀的代码。
2025年09月06日
在C++中,常用的强制类型转换函数有:1. static_cast用于相似类型间的转换,可以进行上行转换(derived to base)、下行转换(base to derived)、基本类型之间的转换等。
2025年09月06日
事件(event)是由系统或者Qt本身在不同时刻发出的。当用户按下鼠标、敲下键盘,或者其它情况时候都会发出一个相应的事件。一些事件在对用户操作做出相应时发出,如键盘事件等;另外一些则是由系统自动发出,如计时事件等。
Qt程序需要在main()函数创建一个QApplication对象,然后调用它的exec()函数。这个函数就是开始Qt的事件循环。在执行exec()函数之后,程序将进入事件循环来监听应用程序的事件,当事件发生时,Qt将创建一个事件对象。Qt中所有事件类都继承自QEvent。在事件对象创建完毕之后,Qt将这个事件对象传递给QObject的event()函数。event()函数并不直接处理事件,而是按照事件对象的类型分派给指定的事件处理函数(event handler)进行处理。
2025年09月06日
C++的值类别系统是理解现代C++特性的基础。本文将介绍值类别的概念和引用类型