C++
C++天下第一!
uv_write
这个作者很懒,什么都没留下…
展开
-
[C++入门] 虚函数的奇技淫巧
所谓虚函数表,是编译器自动为一个带有虚函数的类生成的一块内存空间,其中存储着每一个虚函数的入口地址。由于函数的入口地址可以看成一个指针类型,因此这些虚函数的地址间隔为四个字节。而每一个带有虚函数类的实例,都拥有一个虚函数指针——vptr,在类的对象初始化完毕后,它将指向虚函数表。无用的知识3: 该类的大小 sizeof(Base) = sizeof(void*)。原因很简单,包含了虚函数,所以会包含一个vptr,即虚指针。该指针指向虚函数表,无用的知识2: 该类的大小还是1字节,和有多少普通函数没关系。原创 2024-01-26 01:53:06 · 321 阅读 · 1 评论 -
[C++入门]构造/析构/赋值运算1
作为一门面向对象的语言,我们无法绕开class这个概念。与class密切相关的可能是一个或多个构造函数,一个析构函数,一个copy assignment操作符。这些基础操作对对象的初始化、转换和清理尤为重要。这些工具的构造离不开我们,同样也离不开一双无形而又神奇的大手——编译器。原创 2024-01-26 01:14:12 · 452 阅读 · 1 评论 -
[C++入门] typename的双重含义
如上两行代码是大家在编程中常使用的两种声明方式。有些人喜欢class,可以少打几个字母。其他人可能更喜欢typename,因为这暗示了参数并非一定得是个class类型。但是从C++的角度来看,声明template参数时,两者意义完全相同。原创 2024-01-21 17:04:04 · 315 阅读 · 1 评论 -
正向迭代器和反向迭代器之间的关系
我们可以看到,将current赋给了一个临时变量__tmp, 然后该变量先执行自减操作,再取出存储的值。前面我们提到,反向迭代器其实是从后往前,从rbegin到rend,在直观上是一种"+“, 实际上,从正向的角度来看,其实是”-", 这这好对应代码块的下两行,也就是说current和正向迭代器是存在关联的。rbegin指向容器的最后一个元素,存在超尾现象,因此,在取最后一个元素时,首先需要将目前指向位置自减,然后再解引用。在这样的场景下,我们可以从容器尾部进行一个遍历。原创 2023-04-21 01:01:55 · 188 阅读 · 2 评论 -
std::set 严格弱序
关于set排序的一些踩坑原创 2023-04-19 11:49:27 · 97 阅读 · 1 评论