- 博客(13)
- 收藏
- 关注
原创 多态---01
由于写了一个虚函数,类内部结构发生改变,多了一个虚函数指针(vfptr),虚函数指针指向一个虚函数表(vftable),当子类自己重写虚函数后,会替换子类自己的虚函数表里的内容 ,当用父类的引用指向子类对象,由于本身还是一个子类对象,所以当子类调用speak函数时候,会从子类的虚函数表中找函数入口地址。在多态中,通常父类中的虚函数实现是毫无意义的,主要是调用子类中的重写的内容。在多态中,通常父类中的虚函数实现是毫无意义的,主要是调用子类中的重写的内容。静态多态与动态多态的区别:函数地址的绑定时机不同。
2023-06-06 23:12:56
124
原创 详解new与malloc
new操作符内存分配成功时,返回的是对象类型的指针,类型严格与对象匹配,无需进行类型转化,所以符合类型安全的操作符;需要再new[]一个对象数组时,需要保存数组的维度,C++的做法是再分配数组时,多分配了4个字节的大小,专门保存数组大小,再delete[]时就可以取出这个保存的数,就知道需要调用析构函数多少次了。对于复杂数据结构,new[]先调用operator new[]分配内存,然后再p的前四个字节写入数组大小n,然后调用n次构造函数,针对复杂类型,new[]会额外存储数组大小。
2023-06-01 12:53:54
1195
原创 哈希冲突的产生与解决
将数据元素的关键字K作为自变量,通过一定的函数关系,计算出的值,即为该元素的存储位置。假设第一次计算出来的哈希地址为H0,则发生冲突后,第i次探测时的哈希地址为:H(i)=H0+i^2.哈希表中的元素越多,则发生哈希冲突的概率不断提升,当哈希表中元素到达一定程度时,需要扩容处理。将每个哈希表的节点当作一个链表的头部或者树得根节点,将所有发生哈希冲突得元素放在一个链表中。:不同的值,经过相同的哈希函数映射后,得出的哈希值可能相同。:将哈希表中的关键字映射为元素存储位置的函数。优点:解决哈希冲突的方式简单。
2023-05-22 21:13:56
155
2
原创 C++复习
宏主要用于定义常量及书写复杂的内容;typedef主要用于定义类型别名。宏替换发生再编译阶段之前,输入文本插入替换;typedef是编译的一部分宏不检查类型;typedef会检查数据类型宏不是语句,不在最后加分号;typedef是语句,要加分号标识结束。宏再预处理阶段完成替换,之后被替换的文本参与编译,相当于直接插入了代码,运行时不存在函数调用,执行起来更快;函数调在运行时需要跳转到具体调用函数宏定义属于在结构体中插入代码,没有返回值;函数调用具有返回值。
2023-05-08 16:45:16
626
原创 传输层协议解析 UDP&TCP
捎带确认应答机制:接收方需要对发送方的每一条数据进行确认回复,但每一个回复都是最小20字节的报文,接收方刚好也有数据要发送给对方,就干脆将这个确认回复与要发送的数据结合到一起(确认应答也就是一个确认序号)发送给对方,这样可以尽可能减少空报文的传输。 延迟发送机制:解决频繁的小数据发送效率低,减少IO次数,每次发送数据,数据并不会立即被发送,而是等待,在次期间又有可能有小数据被放到缓冲区中,小数据就会积累成大数据,经过一次IO可以完成传输,减少IO次数提高效率。
2023-04-10 15:36:06
925
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人