2020年11月16日16:11:06 尽量用const和inline而不用#define 尽量用编译器而不用预处理。 尽量用<iostream>而不用<stdio.h> scanf和printf很有用,但不是类型安全的,而且没有扩展性。 on the other hand,①有些iostream的 ...
分类:
编程语言 时间:
2020-11-20 12:22:07
阅读次数:
24
学习C++的shared_ptr智能指针你可能会碰到一个问题,循环引用为什么会出现问题?为什么不能释放?C++不是保证了对象构造成功退出作用域时就绝对会调用析构函数吗,调用析构函数不也会调用成员变量和父类的析构函数吗,为什么还不能释放呢?难道是编译器有bug? 非也,原因是一句绕口令式的答案:你以为 ...
分类:
其他好文 时间:
2020-07-19 23:46:32
阅读次数:
114
如果在构造函数中使用new来初始化指针成员,则应在析构函数中使用delete new和delete必须相互兼容。new对应于delete,new[]对应于delete[] 如果有多个构造函数,则必须以相同的方式使用new,要么都带中括号,要么都不带。因为只有一个析构函数,所有的构造函数都必须与它兼容 ...
分类:
编程语言 时间:
2020-06-14 23:35:43
阅读次数:
87
两者完全等等价。指针成员运算时,由于.比*级别度高,如果直接写成*a.b就相当于*(a.b)了,这是错误的,所以只好用括号提高*的优先回级(*a).b。很明显,这么写很繁琐,于是就用a->b代替(*a).b了,唯一的目答的就是简化 有的时候看不懂的时候转换一下会比较好看 例: ((RCC_TypeD ...
分类:
其他好文 时间:
2020-04-18 14:13:05
阅读次数:
85
一: STM32 固件库就是函数的集合,那么对这些函数有什么要求呢??这里就涉及到一个 CMSIS 标准的基础知识,这部分知识可以从《Cortex-M3 权威指南》中了解到,我们这里只是对权威指南的讲解做个概括性的介绍。经常有人问到 STM32 和 ARM 以及 ARM7是什么关系这样的问题,其实 ...
分类:
其他好文 时间:
2020-04-12 12:49:48
阅读次数:
220
C++允许程序员重新定义标准运算符在与类对象一起使用时的工作方式。 1.重载赋值运算符 为了解决由对象的按成员赋值引起的问题,就需要修改赋值运算符的行为,以便在将其应用于具有指针成员的类的对象时,执行按成员赋值之外的其他操作。实际上,就是要提供用于该类的对象的赋值运算符的不同版本。所以,这样做也可以 ...
分类:
编程语言 时间:
2020-04-04 20:20:49
阅读次数:
78
数据成员指针 成员指针是指可以指向非静态成员的指针,成员指针指示的是类的成员,而非类的对象。类的静态成员不属于任何对象,因此无须特殊的指向静态成员指针,指向静态成员的指针与普通的指针没有什么区别。 声明数据成员指针: 常量对象的数据成员本身也是常量,因此将指针声明成指向 const string 成 ...
分类:
其他好文 时间:
2020-03-15 00:06:18
阅读次数:
50
浅拷贝&深拷贝操作 浅拷贝 仅拷贝数据成员的值,即使数据成员为指针,也只拷贝该地址 C++中拷贝函数的默认行为是浅拷贝 深拷贝 在浅拷贝的基础上,同时拷贝其指针成员所指向的资源 即申请新的内存地址存放原地址的资源 引申 对诸如 这样的资源管理类的 copying行为 [注1],其 深拷贝 是指一并拷 ...
分类:
编程语言 时间:
2020-02-19 23:49:07
阅读次数:
76
编译器自带拷贝构造(ctor)和拷贝赋值函数(operator =), 但是对于成员变量含有指针的类,其不能使用默认的拷贝赋值函数。因为使用默认的,会直接将指针指向的地址进行赋值 (浅拷贝,共享内存,共指一个对象),而不是分配一块内存,具有相同的数值 (深拷贝,独立,两个对象)。 浅拷贝容易造成da ...
分类:
其他好文 时间:
2020-02-07 01:09:04
阅读次数:
93
【1】为什么引入移动语义? 拷贝构造函数中为指针成员分配新的内存再进行内容拷贝的做法在C++编程中几乎被视为是最合理的。 不过在有些时候,我们会发现确实不需要这样的拷贝构造语义。如下示例: 1 #include <iostream> 2 using namespace std; 3 4 class ...
分类:
移动开发 时间:
2020-01-26 10:24:34
阅读次数:
108