摘要:
插件设计 我们只需要在dll里面在继承这个虚基类 进行实现 便可实现com的设计 但是需要dll导出一个函数 这个函数的功能便是返回一个基类指针 子类对象的指针 这样在实 际使用中我们只需要获取一个对象指针 直接使用其功能程序便会自动查虚表进行调用子类实现的 功能 这样便实现了导出一个函数 可以使用 阅读全文
摘要:
动态数组 线性结构(线性表):每个元素只有一个唯一前驱,只有一个唯一后继 数组操作:增加,修改,删除,查询,遍历 包含头文件: #include <vector> 增加 : vctTest.push_back(5); 迭代器 : vector<int>::iterator itr = vctTest 阅读全文
摘要:
迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些行为上像迭代器的东西都可以叫做迭代器。然而迭代器有很多不同的能力,它可以把抽象容器和通用算法有机的统一起来。 迭代 阅读全文
摘要:
函数指针 函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调 阅读全文
摘要:
引用 计数是计算机编程语言中的一种内存管理技术,是指将资源(可以是对象、内存或磁盘空间等等)的被引用次数保存起来,当被引用次数变为零时就将其释放的过程。使用引用计数技术可以实现自动资源管理的目的。 同时引用计数还可以指使用引用计数技术回收未使用资源的垃圾回收算法。 每一个对象都有一个关联的引用计数 阅读全文
摘要:
拷贝函数 这种将对象所持有的其它资源一并拷贝的行为叫做深拷贝,我们必须显式地定义拷贝构造函数才能达到深拷贝的目的。将原有对象的所有成员变量拷贝给新对象,还会为新对象再分配一块内存,并将原有对象所持有的内存也拷贝过来。这样做的结果是,原有对象和新对象所持有的动态内存是相互独立的,更改一个对象的数据不会 阅读全文
摘要:
断言:assert 编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行 阅读全文
摘要:
单重继承无虚函数 查看地址 0x19fef0 查看内存 无偏移地址和跳转地址 单重继承有虚函数 有虚函数跳转地址跟入地址查看 得到b子类的虚函数 ,覆盖到了父类虚函数。 多重继承有虚函数 得到了两个地址,跳转过去得到两个地址 子类重写的虚类会覆盖父类虚表中对应的虚类 多重继承无虚函数 那个父类有虚表 阅读全文
摘要:
作用域和生命周期问题: 作用域 生命周期 存放位置 局部 从定义处开始到函数结束 函数开始到函数结束 栈空间 块 从定义处开始到块结束 函数开始到函数结束 栈空间 全局 工程的任何地方 程序模块载入到卸载 数据区 静态全局 工程的任何地方 程序模块载入到卸载 数据区 析构函数必须是虚函数 而c++默 阅读全文
摘要:
抽象类 通常在编程语句中用 abstract 修饰的类是抽象类。在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。 重载 隐藏 覆盖 重载 作用域相同 函数名相同,参数列表不同,返回值和调用约定不做考虑 函数重载:C++ 允许多个函 阅读全文