摘要: 问题一:哪些函数不能实现成虚函数 虚函数依赖: 1:虚函数能产生地址,存储在vftable中 2:对象必须存储在 vfptr-> vftable-> 虚函数地址 **构造函数 ** 1:virtual + 构造函数 (NO,不可以在构造函数前加virtual 2:构造函数中 调用的任何函数,都是静态 阅读全文
posted @ 2022-11-28 08:49 Hello_Bugs 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 代码1 class Base { public: Base(int data=10):ma(data){ cout<<"Base()"<<endl; } void show(){cout<<"Base Show()"<<endl;} void show(int){cout<<"Base Show(i 阅读全文
posted @ 2022-11-27 21:53 Hello_Bugs 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 重载关系 一组函数要重载,必须处在同一个作用域中 ,而且函数名字相同,参数列表不同 代码1中的Base中的 show() 和show(int) 属于重载 代码2中的Base中的 show() 和Derive中的show()不属于重载不在同一个作用域下面 隐藏/重定义的关系(主要是指作用域隐藏) 在继 阅读全文
posted @ 2022-11-27 11:22 Hello_Bugs 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 派生类从继承可以继承来所有的成员(变量和方法) 除了构造函数和析构函数 派生类怎么初始化从基类继承来的成员变量的呢?通过调用基类的构造函数来初始化 派生类的构造函数和析构函数,负责初始化和清理派生类部分 派生类从基类继承来的成员的初始化和清理由谁负责?是由基类的构造和析构函数来负责 派生类对象的构造 阅读全文
posted @ 2022-11-27 10:03 Hello_Bugs 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 1:继承的本质和原理 2:派生类的构造过程 3:重载,覆盖,隐藏 4:静态绑定和动态绑定 5:多态,vfptr,vftable 6:抽象类的设计原理 7:多重继承以及问题 8:虚基类 vbptr 和vbtable 9:RTTI 10:C++四种类型强转 继承的本质和原理 1:代码的复用 类和类之间的 阅读全文
posted @ 2022-11-27 08:39 Hello_Bugs 阅读(50) 评论(0) 推荐(0) 编辑
摘要: MyQueue版本1 #include <iostream> using namespace std; template<typename T> class MyQueue { private: struct QueueItem { QueueItem(T _data = T(), QueueIte 阅读全文
posted @ 2022-11-25 17:25 Hello_Bugs 阅读(70) 评论(0) 推荐(0) 编辑
摘要: new ,delete 运算符 int *p =new int; delete p; 看一下汇编代码 可以看到new 和delete 运算符其实也是 operator运算符重载函数的调用 malloc和new malloc 按字节开辟内存 new在开辟内存的时候需要指定类型 new int[10] 阅读全文
posted @ 2022-11-23 20:46 Hello_Bugs 阅读(278) 评论(0) 推荐(1) 编辑
摘要: 我们之前有<C++模板编程模块>中的第<四>节 理解空间配置器allocator优化STL中的Vector 我将在此基础上加入迭代器功能代码 Iterator 为什么可以遍历所有的容器的方式都一样? auto it =continer.beign(); for( ;it!=continer.end( 阅读全文
posted @ 2022-11-22 23:36 Hello_Bugs 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 迭代器的功能: 提供一种统一的方式,来透明的遍历容器 理解 begin()方法,end()方法, ++ , * 的用处 其中 C++11 中提供的foreach的方式,其底层还是通过迭代器来进行遍历的. #include <iostream> using namespace std; class M 阅读全文
posted @ 2022-11-22 17:09 Hello_Bugs 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 我们结合运算符重载知识实现string 类 在自己实现的String类中可以参考C++中string的方法 例如构造,加法,大小比较,长度,[] 等操作. 当前的MyString 类中,暂时不加入迭代器,我们将在下一节中加入迭代器的代码. #include <iostream> using name 阅读全文
posted @ 2022-11-21 22:34 Hello_Bugs 阅读(56) 评论(0) 推荐(0) 编辑