- 博客(12)
- 资源 (5)
- 收藏
- 关注
原创 根据日期求天数
<br />#include <iostream>#include <stdexcept>#include <ctime>using namespace std;class Date{ private: unsigned year; unsigned month; unsigned day; unsigned days;
2010-06-22 15:50:00 885
转载 有关C++中的 placement new
<br />placement new的含义<br />placement new 是重载operator new 的一个标准、全局的版本,它不能够被自定义的版本代替(不像普通版本的operator new 和 operator delete能够被替换)。<br /><br />void *operator new( size_t, void *p ) throw() { return p; }<br /><br />placement new的执行忽略了size_t参数,只返还第二个参数。其结果是
2010-06-12 17:31:00 835 1
原创 c++ new 重载
当写出<br />p = new P();<br />这样的代码的时候, 实际上有两步操作, 首先分配内存,<br />然后在分配好的内存之上初始化类成员.<br /><br />第二步是有构造函数完成的, 第一步就是new函数的工作.<br /><br />全局的new有六种重载形式, <br />void *operator new(std::size_t count)<br /> throw(std::bad_alloc); //一般的版本<br /><br />void
2010-06-09 16:59:00 897
转载 标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast
<br />C 风格(C-style)强制转型如下:<br />(T) exdivssion // cast exdivssion to be of type T<br />函数风格(Function-style)强制转型使用这样的语法:<br />T(exdivssion) // cast exdivssion to be of type T<br /> <br />这两种形式之间没有本质上的不同,它纯粹就是一个把括号放在哪的问题。我把这两种形式称为旧风格(old-style)的强制转型。<br />使用
2010-06-09 16:03:00 482
转载 CUJ:标准库:Allocator能做什么?
<br />The Standard Librarian: What Are Allocators Good For? <br /> <br />Matt Austern <br /> <br />http://www.cuj.com/experts/1812/austern.htm?topic=experts <br /> <br />--------------------------------------------------------------------------------<br />
2010-06-08 22:14:00 573
转载 auto_ptr和operator new
<br />#include <memory><br />#include <iostream><br />#include <cstddef><br />using namespace std;<br />class TraceHeap {<br /> int i;<br />public:<br /> static void* operator new(size_t siz) {<br /> void* p = ::operator new(siz);<br /> cout << "Al
2010-06-08 15:25:00 508
转载 拨开自定义operator new与operator delete的迷雾
<br />C++里允许用户通过自定义operator new的方式来更改new表达式的行为,这给了程序员定制内存管理方案的自由。但是享受这种自由的时候必须遵守一定的规范,具体可以参见《Effective C++ 2nd》的相关条款。本文补充解释一些特别容易引起误解的问题。<br /> operator new和operator delete都有其正规形式(normal signature):<br />void* operator new(size_t size);<br />void operat
2010-06-08 15:09:00 583
原创 类模板中的友元声明和定义
普通友元:FooBar的成员和fcn函数可以访问Bar类的任意实例的private成员和protected成员模板友元类FooBar#include using namespace std;template class Bar{ friend class FooBar; Type pri;};class FooBar{ public: template void foofcn(const Bar& b);
2010-06-04 15:10:00 4667 2
转载 判断闰年
<br />printf(a%(a%100?4:400)?"NO":"YES");<br /> <br />(0 == n %400) || ((0 == n%4) && (0 != n%100))
2010-06-04 08:26:00 687
原创 几种模板友元的声明
<br />#include <iostream>using namespace std;/*友元模板函数在类的内部声明,可以实例化多次,因为每次实例化都会生成相应的版本*/ template<class Type>class Bar{ template<class T> friend class Foo; friend ostream& operator << (ostream& os,const Bar<Type> &b) {return os<<b.
2010-06-02 18:21:00 594
转载 C++中catch(…)如何使用
C++异常处理模型的trycatch使用语法,其中catch关键字是用来定义catch block的,它后面带一个参数,用来与异常对象的数据类型进行匹配。注意catch关键字只能定义一个参数,因此每个catch block只能是一种数据类型的异常对象的错误处理模块。如果要想使一个catch block能抓获多种数据类型的异常对象的话,怎么办?C++标准中定义了一种特殊的catch用法,那就是” catch(…)”。<br />感性认识<br /><br /> 1、catch(…)到底是一个什么样的东东
2010-06-01 16:35:00 1419
原创 打印二叉树形结构
<br />#include <stdio.h>/*treeview打印二叉树型结构,d1为每行前面的空格数,d2为元素间的空格数n为每次打印的元素每层的前面空格数等于它下一层的中间空格数最多可打印6层*/ void treeview(int d1,int d2,int n){ int i,j=1,k,count=1; if(n>0) { treeview(d2,d2*2+1,n-1);//每层递归前面空格数和中间空格数的关
2010-06-01 15:09:00 5070
词法分析系统(有限自动机,DFA,NFA)
2010-12-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人