C++
SAMCYC
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++ 重载()符号
作为运算符重载话不多说,代码最直观#include <iostream>#include <string>using namespace std;//定义函数对象类class cmp {public: //重载 () 运算符 bool operator ()(const string &a,const string &b) { //按照字符串的长度,做升序排序(即存储的字符串从短到长) return (a原创 2020-08-10 23:54:10 · 2674 阅读 · 0 评论 -
C++多态相关
虚函数表当通过指针访问类的成员函数时:如果该函数是非虚函数,那么编译器会根据指针的类型找到该函数;也就是说,指针是哪个类的类型就调用哪个类的函数。如果该函数是虚函数,并且派生类有同名的函数遮蔽它,那么编译器会根据指针的指向找到该函数;也就是说,指针指向的对象属于哪个类就调用哪个类的函数。这就是多态。编译器之所以能通过指针指向的对象找到虚函数,是因为在创建对象时额外地增加了虚函数表。如果一个类包含了虚函数,那么在创建该类的对象时就会额外地增加一个数组,数组中的每一个元素都是虚函数的入口地址。不过数组转载 2020-07-24 22:11:09 · 193 阅读 · 0 评论 -
浅析C++中迭代器(iterator)的失效情况
array/vector/deque这三种容器的内存空间连续,删除某一元素会导致其后所有元素前移。如图所示,删除某一元素后,后面的元素全都前移了一位。此时it3指向end位置。依照C++规定,包括it0在内的其后迭代器全部“失效”(尽管他们有些指向的是有效位置),对这些迭代器进行任何操作(解引用、调用符号重载函数等)都会抛出错误。解决方法:erase函数将返回下一个有效位置的迭代器例如://删除2之前的所有元素vector<int> vec{ 0,1,2,3 };for (a原创 2020-06-07 13:12:48 · 583 阅读 · 0 评论
分享