
C++
文章平均质量分 65
hongjunbj
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
关于在析构函数中释放内存
当你提供的API需要分配内存时,可以考虑创建一个对象保存新分配内存的地址,然后在对象析构时释放内存。这样用户不用担心忘记释放内存。需要注意的是,如果用户创建了这种对象并得到新分配的内存地址后,并不立即处理,而是放到一个队列中,这个时候需要特别注意该对象的析构导致过早的释放了内存,使队列中记录的内存地址变成一个无效的地址!这个时候,其实根据C++Primer,我们已经重载了析构函数,则也应该原创 2012-12-07 17:40:27 · 3650 阅读 · 1 评论 -
C++智能指针的对比
一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr、boost::s转载 2014-04-24 17:14:01 · 640 阅读 · 0 评论 -
关于虚继承需要注意的几个问题
1、在普通继承中,D和A的关系是B is a A, 在虚继承中,B和A的关系是B has a A原创 2014-05-04 17:11:49 · 1728 阅读 · 0 评论 -
Constructor/Destructor/Copy Constructor/operator =
1) If you have created any constructors or even copy constructors, the compiler won't create default constructor for you.2) operator =, copy constructor and destructor are siblings, if we overwrite原创 2013-09-17 17:16:07 · 926 阅读 · 0 评论 -
成员函数和友元函数的选择方案指导原则
成员函数和非成员函数 ( 友元函数 ) 选择方案 通常对类本身的操作 ,( 如赋值 =, 下标 [], 调用 (), 成员访问符 ->, 自增 ++, 自减 --) 请选择成员函数 通常对两个对象进行操作 ,( 如算术操作 , 位操作符 , 关系操作 , 输入输出 ) 请选择非成员函数 , 就是用友元函数实现 成员 / 非成员函数重载选择指导 一元操作符就是操作符有一个对象原创 2013-09-18 11:27:09 · 943 阅读 · 0 评论 -
std::sort & unique的用法示例
这两个通用函数主要用于vector。其他container如list有自己的sort和unique方法示例:#include #include #include int main(int argc, char **argv){ int array1[] = {10, -7, 3, 4, 4, -7}; vector myset(array1, ar原创 2013-11-22 16:29:04 · 1754 阅读 · 0 评论 -
C++模板
原来...C++ template1.自定义Stack模板类#include #include template class Stack { private: std::vector elems; // elements public: void push(T const&); // push element void pop(转载 2014-02-24 14:42:41 · 574 阅读 · 0 评论 -
back_inserter & front_inserter & inserter的用法
这几种iterator一般用于copy类型的函数,如sort_copy, copy, unique_copy,因为copy系列的函数不检查dest参数的有效性,即是否已经分配了内存#include #include #include #include templatevoid print(T &vec){ for(auto iter=vec.begin(); iter !原创 2013-11-22 17:05:58 · 2285 阅读 · 0 评论 -
调用运算符和转换运算符--两个容易混淆的运算符
***************************************************************************** 重载调用操作符 () // 也称函数对象 定义了调用操作符 () 的类,其对象常称为函数对象,它比函数更加灵活和方便 函数对象常用于通用算法的实参 可以为类的对象重载调用操作符 () ,如用结构实现的求绝对值的结构原创 2013-09-18 11:37:39 · 682 阅读 · 0 评论 -
std::map [] operator 和 insert 的区别
如果key已经存在,[] operator会将key对应的value用新值替换,而insert会返回一个pair说这组元素已经存在。如果key不存在,二者效果相同示例:void print(std::map &intmap){ using namespace std; auto iter = intmap.begin(); for(; iter != intmap.end(原创 2013-09-13 10:29:35 · 2166 阅读 · 0 评论 -
stream_iterator的用法
#include #include #include #include #include using namespace std;int main(){ istringstream ss("abc dfn fasd nny"); istream_iterator in(ss); istream_iterator end; vector vec_tmp原创 2013-08-20 16:31:13 · 697 阅读 · 0 评论 -
C++ function、bind以及lamda表达式
本文是C++0x系列的第四篇,主要是内容是C++0x中新增的lambda表达式, function对象和bind机制。之所以把这三块放在一起讲,是因为这三块之间有着非常密切的关系,通过对比学习,加深对这部分内容的理解。在开始之间,首先要讲一个概念,closure(闭包),这个概念是理解lambda的基础。下面我们来看看wikipedia上对于计算机领域的closure的定义:转载 2013-05-06 17:05:20 · 2603 阅读 · 0 评论 -
智能指针的一种实现
std的auto_ptr实现了接口get原创 2014-04-28 22:28:40 · 560 阅读 · 0 评论