
C++
文章平均质量分 55
Sputnik_02
这个作者很懒,什么都没留下…
展开
-
空类的大小
class A{};int main(){ std::cout << sizeof(A)<< std::endl; return 1;}为什么输出结果是1呢?实际上,这是类结构体实例化的原因,空的类或结构体同样可以被实例化,如果定义对空的类或者结构体取sizeof()的值为0,那么该空的类或结构体实例化出很多实例时,在内存地址上就不能区分该类实例化出的实例,所以,为了实现每个实例在内存中都有一个独一无二的地址,编译器往往会给一个空类隐含的加一个字节.原创 2022-04-26 19:00:17 · 361 阅读 · 0 评论 -
Effective C++阅读笔记 四
1,让接口容易被正确使用 促进正确使用:保持接口一致性,增加内置类型的兼容 阻止误用:通过建立新类型及限制类型的操作,对参数加以束缚,减少意外的失误。2,设计class犹如设计type C++定义一个类的时候,也就设计出了一种新的类型,我们需要谨慎考虑以下几点: a,class对象应该如何创建与销毁? b,对象的初始化与赋值该有怎么样差别? c,对象如果进行值传递,会有什么影响? ...原创 2021-07-01 19:10:22 · 184 阅读 · 0 评论 -
Effective C++阅读笔记 三
1,谨慎处理资源的释放问题 对于动态申请的内存,要注意释放,因为有时候调用了某些条件语句会导致内存没有释放。书中建议使用auto_ptr,但C++11之后有更加合适的智能指针来管理。 谨慎处理资源的赋值。2,成对使用new与delete时要采取相同形式 当我们使用new的时候,会有两件事发生:一是内存被分配出来,二是针对此内存会有一个或多个构造函数被调用。delete的时候,则是先调用一个或者多个析构函数,然后内存才被释放。 但...原创 2021-07-01 15:08:25 · 141 阅读 · 0 评论 -
Effective C++阅读笔记 二
1,了解C++编译器默认编写的函数 对于一个类,编译器会根据需要创建默认构造函数,默认拷贝函数,默认析构函数以及默认重载赋值运算符。但值得注意的是,只有这些函数需要被调用并且我们没有手动定义的时候,它们才会被编译器创建。 值得注意的是,对于拷贝构造函数或者赋值运算符的重载,由于默认的只是简单的赋值,所以对于成员变量为const的情况下,编译器也不会生成对应的默认函数。甚至在我测试的C++14中,如果存在const成员变量,编译器会拒绝生成默认构造函数。(不一定正确)...原创 2021-06-30 19:35:11 · 123 阅读 · 0 评论 -
Effective C++阅读笔记 一
1,尽量用const或者enum代替#define。 #define,在预编译的时候,系统只是进行单纯的文本替换,而不存在类型检查,所以可能存在风险。2,对于形似函数的宏定义,最好用inline模板进行替换。 #define只是进行文本替换,虽然不会带来函数的额外开销,但有时候很出错,尽管给宏的“实参”加上括号,也不能彻底避免,例如:#define CALL_WITH_MAX(a,b) func((a)>(b)?(a):(b))int a = 10...原创 2021-06-30 17:00:11 · 193 阅读 · 0 评论 -
Qt元对象系统
元对象系统可以说是QT最核心的功能了,就是因为元对象系统的存在,才有了QT的信号槽和动态属性,今天打算复习下这套机制。以下内容都是自己的理解,有不正确的地方欢迎指正!Qt元对象系统的实现主要依赖于三点:继承QObject,包含Q_OBJEC宏以及moc编译器。对于继承了QObject且在头文件声明了Q_OBJECT宏的类classA,moc编译器会扩展生成一个moc_classA.cpp的文件,在里面添加了一些支持信号槽等功能的代码————主要是生成classA对性的metaObject类,以及原创 2021-06-03 19:39:04 · 968 阅读 · 0 评论 -
谷歌代码规范
马住https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/contents/转载 2021-05-31 17:36:56 · 150 阅读 · 0 评论 -
浅析C指针
对于很多C语言的学习者来说,指针无疑是一个很让人迷惑的东西,往往让人一头雾水,很多类C的编程语言(Java等)甚至移除了指针这个概念。但其实,指针可以说是C语言的灵魂,运用得当,可以发挥巨大的作用,现在就让我们一起来学习一下指针。以下内容属于个人理解,有问题请大家指正,谢谢!首先,让我们来弄清楚,什么是指针?我们都知道,C语言中,变量是存放在内存中的,而内存可以简单理解为一个有序字节组成的数组,每一个字节都有对应的位置,那么变量就应该有对应的储存地址。而指针,就是储存着变量地址的变量。这么说原创 2021-05-12 19:17:00 · 200 阅读 · 0 评论 -
在子线程中进行GUI渲染的一种思路。
在子线程中进行GUI渲染的一种思路。 从新开始写博客,记录一下QT学习之中遇到的坑,都是个人理解,有错误的地方,希望大家多多指正。 之前看见有人提出了能不能在子线程进行GUI渲染,都知道GUI是在主线程完成渲染的,但是可以通过QPainter在子线程“画”一张图片,然后通过信号槽的方式转递给主线程,再在主线程中渲染。这样做的好处是,如果渲染步骤太过繁琐,可以避免造成主线程长时间阻塞。 下面是笔者写的一个demo。ImageThread::~ImageThread(){...原创 2021-05-10 14:59:14 · 537 阅读 · 0 评论