花里胡哨
友善啊,朋友
这个作者很懒,什么都没留下…
展开
-
c++自定义类型的字面值常量
int i = 888;编译器会将数字888转成一个int对象,对于自定义的类型也可以这么做:#define debug qDebug()<<struct ceshi{ int frist; int second; ceshi(int one = 0,int two = 0):frist{one},second{two} { }};ceshi operator"" _xxx(long double f){ return cesh原创 2021-03-06 15:38:50 · 545 阅读 · 0 评论 -
重载new和delete
来自《C++ Primer (第五版)》19.1章节当使用new / new[]时,做了三件事:1、new表达式调用了operator new /operator new[]标准库函数,该函数分配内存空间用来储存对象2、编译器调用构造函数构造对象3、对象储存到分配的空间当使用delete / delete[]时,做了两件事:1、执行析构函数2、编译器调用operator delete /operator delete[]标准库函数释放内存重载new和delete就是重写这..原创 2020-11-30 00:00:36 · 378 阅读 · 0 评论 -
定位new表达式
来自《c++ Primer》19.1.2章节一般使用new运算符时会在堆内存申请一块内存空间并将地址赋给指针。这个地址是不能由用户确定的。所谓定位new表达式是指使用new运算符后返回的是已知的用户指定的地址,不管它是否已经被使用,而且可以看到新值直接覆盖在旧值上面。 int a = 10; qDebug()<<&a; QString * s = new(&a)QString; *s = "xxx"; qDebug()<&原创 2020-12-01 22:40:11 · 604 阅读 · 0 评论 -
QStringBuilder提升QString连接的效率
QString A = "B" + "C" + "D";向这样连接字符串的时候会创建多个临时对象,也就是要多次申请/释放内存空间。Qt帮助文档里介绍了使用QStringBuilder提升连接效率的方法: #include <QStringBuilder> QString hello("hello"); QStringRef el(&hello, 2, 3); QString world("world"); QStr原创 2021-02-16 22:26:35 · 2574 阅读 · 0 评论