左值和右值

左值和右值

C++中关于左值右值以及移动语义这块内容并不是很好理解,对这块内容做一个总结。

阅读更多
mutable

mutable

想象一下,你有一个成员函数,它被标记为const,因为你不希望在该函数中修改成员变量,为了保证类状态不变。

但是后来随着版本演进,你又不得不在该函数中修改一个新的成员变量,这个新的成员变量通常和类状态无关。

那么你需要认识下mutable。

阅读更多
GDB和ELF
C++版本演进
C++测量性能

C++测量性能

性能,功耗,稳定性是衡量软件质量的重要指标。关注软件性能就是希望用最少时间做正确的事情,相同的输入在得到期望的输出过程中使用最少时间就意味着性能最优。优秀的软件架构,优秀的算法都是提高软件性能的重要手段。

我们平时写C++软件时候,可以如何测量软件性能呢。

这里分享一个简单好用的测试性能的方法。

阅读更多
不使用回车获取单个按键值

不使用回车获取单个按键值

C++软件在终端的每一次输入都以回车键作为结束,但是有些场景,我们希望每一个输入按键都能及时转换成对应的功能。

例如,在一个小游戏中,我希望WSAD的按键可以转换成上下左右的执行命令。我不希望看到这些按键在终端中输出出来,并且输入立即执行,不需要按回车按键。

可以利用stty来实现该功能。

阅读更多
C++中的打印
大小端数据存储
关于栈内存的生长方向

关于栈内存的生长方向

C++内存分配一般说栈内存地址在堆内存高处,并且栈内存分配向下增长,堆内存地址向上增长。栈内存的向下增长是如何体现的?

阅读更多
C++智能指针

C++智能指针

C++中使用new创建的对象需要开发者自己使用delete进行内存释放,否则就会有内存泄漏的风险。不像C#和Java等语言,都有内存托管的机制,new出来的对象不需要开发者去关心什么时候释放内存。

显然,这对C++开发者是非常不友好的。当然,C++设计者们提供了其他的解决方案,就是用智能指针去替代原始指针。

你可以使用std::unique_ptrstd:shared_ptr这些智能指针来处理业务,它们都包含在头文件<memory>中。

阅读更多