摘要:
有些实时系统,譬如战斗机驾驶辅助系统,考虑到堆上动态分配有太大的不确定性,譬如内存泄漏,且比栈上分配性能稍逊,譬如通过一套空闲内存检索管理算法寻找空闲内存,而栈分配只需移动 栈指针,所以在这种特殊场景下会禁用堆分配。实际实现上可以定义重载过new的基类,让不允许堆上分配的对象类继承。 阅读全文
随笔分类 - C++
expected identifier before numeric constant错误
2016-05-10 18:56 by 放作夥, 6131 阅读, 收藏,
摘要:
我其实不愿意记录报错信息的,但是这种“提示信息无卵用”的我忍不了,于是记录一下。 c++的类体中,方法以外的区域不允许有初始化,简单类型是可以的,但是有构造函数的复杂对象则不行了,比如string对象! class A{ vector v(9); //error,expected identifie 阅读全文
模板类不能分离实现
2015-11-12 19:00 by 放作夥, 243 阅读, 收藏,
摘要:
今天编译一直报undefined reference,调了半天,才找到线索,用了模板技术的类编译器不支持分开申明和实现,记录一下。 难怪boost把声明跟实现放在了一起,叫hpp 阅读全文
vector的clear
2015-06-25 20:43 by 放作夥, 959 阅读, 收藏,
摘要:
要求你熟悉stl,言下之意就是要你熟悉stl的内部实现。vector的clear动作并不回收内存,有点像内存泄露但又不是内存泄露,因为下次装入元素不用分配内存,直接使用这些预分配内存,clear并不改变vector的capacity。vector内的元素如果是对象型会在clear时调用对应的析构... 阅读全文
引用和指针的区别
2015-05-24 11:15 by 放作夥, 200 阅读, 收藏,
摘要:
在牛客网上看到的标准答案,太对了,忍不住记录下来。1. 指针是一个实体,而引用仅是个别名;2. 引用使用时无需解引用(*),指针需要解引用;3. 引用只能在定义时被初始化一次,之后不可变;指针可变;4. 引用不能为空,指针可以为空;5. “sizeof 引用”得到的是所指向的变量(对象)的大小,而“... 阅读全文
new总结
2015-05-23 10:19 by 放作夥, 174 阅读, 收藏,
摘要:
引子:写C的人有个好习惯,就是if(malloc(sizeof(int)) == NULL) 申请完之后会检查一下,那么c++里你或许也会自然而然的有个好习惯if(new XXX == NULL) ,但这样无补于事,因为这个new并不等效于malloc,这里如果失败了就抛出badalloc,后面的检... 阅读全文
c++的坑
2015-04-23 21:55 by 放作夥, 192 阅读, 收藏,
摘要:
碰到两个坑,记录一下。1.class A{public: void test(){}};int main(){ A a(); //本意是定义一个A对象,实际结果是声明一个返回值为A类型的函数,导致下一句编译失败 a.test(); return... 阅读全文
RAII惯用法
2015-03-20 22:36 by 放作夥, 292 阅读, 收藏,
摘要:
RAII,也称为“资源获取就是初始化”,是c++等编程语言常用的管理资源、避免内存泄露的方法。简单的说,RAII 的做法是使用一个对象,在其构造时获取资源,在对象生命期控制对资源的访问使之始终保持有效,最后在对象析构的时候释放资源。例如,我们无需直接调用一对非成员函数OpenPort/ClosePo... 阅读全文
auto_ptr学习
2015-01-14 21:43 by 放作夥, 166 阅读, 收藏,
摘要:
1.autor_ptr是简单智能指针,不允许转移所属关系。赋值,参数传递的时候会转移所有权,因此不要轻易进行此类操作,若进行此操作原auto_ptr失效,不会执行析构。 2.auto_ptr还有一个比较好的就是保证异常安全,在有异常抛出,提前结束函数块时也会保证析构。 3.赋值操作。利用已经... 阅读全文
面向过程和面向对象
2014-05-12 22:05 by 放作夥, 213 阅读, 收藏,
摘要:
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游... 阅读全文
(转)public、protect、private继承方式 C++
2014-05-02 19:52 by 放作夥, 395 阅读, 收藏,
摘要:
C里面的结构体内的成员不受任何机制保护,直接能用,比如StructtypeA.x;StructtypeA.y;StructtypeA.fun();而c++则不同,c++的类像强化型的结构体public公有继承protected保护继承private私有继承我们知道类的private和protecte... 阅读全文
智能指针之auto_ptr
2014-04-23 13:25 by 放作夥, 257 阅读, 收藏,
摘要:
auto_ptr是C++标准库里的所谓智能指针之一。是用来防止内存泄漏的一种方式。它不允许多个指针指向同一块内存,而且能在方法返回时自动释放所指的内存。这样即使在程序因为异常退出时也能释放掉所占用的资源,不用造成内存泄漏。void f(){classA* ptr = new classA;try{.... 阅读全文
虚函数和纯虚函数的区别
2014-04-14 19:17 by 放作夥, 253 阅读, 收藏,
摘要:
(1)虚函数为了重载和多态的需要,在基类中是已经实现了的,即便是个空实现,所以子类中可以重写也可以不写基类中的此函数!纯虚函数在基类中是没有实现的,必须在子类中加以实现,很像java中的接口函数!(2)虚函数是为了继承接口和默认行为纯虚函数只是继承接口,行为必须重新定义(3)在很多情况下,基类本身直... 阅读全文