- 博客(11)
- 资源 (7)
- 收藏
- 关注
原创 关于标准分治、动态规划、贪婪选择三种策略的比较
一、考虑动态规划时需要考虑的因素:1、最优解里需要解决的子问题数量有多少?2、在判断使用哪些子问题时,需要进行多少选择?二、动态规划的时间成本可简记为: **全部子问题数量 * 选择数量**三、使用贪婪策略时,两个重要特征:1、贪婪选择属性2、最优子结构标准分治、动态规划、贪婪选择三种策略的比较
2015-10-21 22:05:03
903
原创 Qt Creator5.4中出现error LNK2019 无法解析的外部符号的解决办法
在使用Qt Creator建立工程之后,又新建了一个新的类(about类),类的声明在about.h中,但在编译链接时,链接时找不到MainWindow.obj,经过在网上一翻查找,查到解决方案如下:将当前工程所在父目录下的bulid-(工程名)-Desktop-Qt-5-4-MSVC2010-32bit-(Debug/Release)文件夹删除,若是在Debug状态下,则删除Debug文件夹,若
2015-10-16 18:57:59
1116
原创 私有继承与保护继承
使用私有继承,类将继承实现。 包含将对象作为一个命名的成员对象添加到类中,而私有继承将对象作为一个未被命名的继承对象添加到类中。使用术语子对象(subobject)来表示通过继承或包含添加的对象。 因此私有继承提供的特性与包含相同:获得实现,但不获得接口。 1、包含版本提供被显式命名的对象成员,而私有继承提供了无名称的子对象成员。这是两种方法的第一个主要区别。 2、对
2015-08-01 00:37:37
797
原创 类设计回顾
1、编译器生成的成员函数 1、默认构造函数: 默认构造函数要么没有参数,要么所有的参数都有默认值。 自动生成的默认构造函数的另一项功能是,调用基类的默认构造函数以及调用本身是对象的成员所属类的默认构造函数。 如果类包含指针成员,则必须初始化这些成员,因此,最好提供一个显式默认构造函数,将所有的类数据成员都初始化为合理的值。 2、复制构造函数
2015-07-27 22:24:12
313
原创 抽象基类(ABC)
C++使用纯虚函数提供未实现的函数。当类声明中包含纯虚函数时,则不能创建该类的对象。包含纯虚函数的类只用作基类,要成为抽象基类,必须至少包含一个纯虚函数。原型中的=0使虚函数成为纯虚函数。ABC描述的是至少使用一个纯虚函数的接口。继承和动态内存分配: 1、第一种情况:派生类不使用new 此时派生类可以不用再定义显式析构函数、复制构造函数和赋值运算符。 2、第二种情况:派生类
2015-07-27 19:59:56
521
原创 虚函数的工作原理
通常,编译器处理虚函数的方法是:给每个对象添加一个隐藏成员。隐藏成员中保存 一个指向函数地址数组的指针。这种数组称为虚函数表(virtual function table, vtbl)。虚函数表中存储了为类对象进行声明的虚函数的地址。总之,使用虚函数时,在内存和执行速度方面有一定的成本。包括:1、每个对象都将增大,增大量为存储地址的空间。 2、对于每个类,编译器都创建一个虚函数地址表(数组)。
2015-07-24 16:49:48
430
原创 类的继承
类的继承有3种方式: 1、公有继承 2、保护继承 3、私有继承公有继承:它建立了一种is-a关系,即派生类对象也是一个基类对象,可以对基类对象执行的任何操作,也可以对派生类对象执行。 这种关系称为is-a-kind-of(是一种)关系可能更准确,但通常使用术语is-a。 公有继承不能建立is-like-a关系,也就是说,它不采用明喻。 公有继承不建立is-implemented-a
2015-07-23 22:47:34
325
原创 成员初始化列表
1、对于const数据成员,必须在执行到构造函数体之前,即创建对象时进行初始经。 2、成员初始经列表由逗号分隔的初始化列表组成(前面带冒号)。它位于参数列表的右括号之后、函数体左括号之前。 3、初值可以是常量或构造函数的参数列表中的参数。这种方法并不限于初始化常量。 例如下代码:Queue::Queue(int qs) : qsize(qs), front(NULL), rear(NULL),
2015-07-15 20:38:05
1185
原创 定位new运算符
1、程序员必须负责管理定位new运算符用于从中使用的缓冲区内存单元,要使用不同的内存单元,程序员需要提供两个位于缓冲区的不同地址,并确保这两个内存单元不重叠。 例如下代码:pc1 = new (buffer) JustTesting;pc3 = new (buffer + sizeof(JustTesting)) JustTesting("Better Idea", 6);2、如果使用定位new
2015-07-15 17:02:38
307
原创 在构造函数中使用new时应注意的事项
1、如果在构造函数中使用new来初始化指针成员,则应在析构函数中使用delete。2、new和delete必须相兼容。new对应于delete,new[]对应于delete[]。3、若有多个构造函数,则必须以相同的方式使用new,要么都带中括号,要么都不带。4、应定义一个复制构造函数,通过深度构造函数,通过深度复制将一个对象初始化为另一个对象。类似下面代码:String::Stri
2015-07-14 22:08:10
316
ubuntu下cmake编译opencv需要的
2017-09-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人