汇编网首页登录博客注册
wukong的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
文章收藏

[2012-03-11 21:00] 数据结构之二叉树c++实现

template<typename T>
class CBTNode
        {
        public:
                T data;
                CBTNode* parent,*left,*right;
        public:
                CBTNode(
                        T data1 = T(),
                        CBTNode* parent=NULL,
                        CBTNode *left=NULL,
                        CBTNode *right=NULL):data(data1),parent(NULL),left(NULL),right(NULL)
                {}
                
                T& operator=(const T& da)
                ...
阅读全文 | 评论次数(0) | 浏览次数(392) | 所属类型(C++)

[2012-03-10 15:27] 数据结构之双向链表c++实现

//节点类
template<typename T>
class CNode
        {
        public:
                T data;
                CNode* prev,*next;
        public:
                CNode():data(T()),prev(NULL),next(NULL)
                {}
                CNode(const T& initdata):data(initdata),prev(NULL),next(NULL)
                {

                }
                T& operator=(const T& da)
                {
                        data = da;
                        return (this->data);
        ...
阅读全文 | 评论次数(0) | 浏览次数(419) | 所属类型(C++)

[2012-03-09 13:43] 数据结构之线性表(数组形式)c++实现

typedef  unsigned int  UINT;
template<typename T>
class CArrayList  
{
public:
        enum Status
        {
                OVERFLOW=-1,
                OK=1,
                ERROR
        };
        int m_length;
        int m_size;
        T *pdata;
        bool m_isSorted;
        int m_IncreNum;
        typedef int (*COMPAREPROC)(T t1,T t2);
public:
        CArrayList();
        CArrayList(UI...
阅读全文 | 评论次数(0) | 浏览次数(392) | 所属类型(C++)

[2012-03-09 12:38] operator new/delete重载

内存管理的基本要求
用系统默认的 malloc() 分配的内存要交给系统默认的 free() 去释放;
用系统默认的 new 表达式创建的对象要交给系统默认的 delete 表达式去析构并释放;
用系统默认的 new[] 表达式创建的对象要交给系统默认的 delete[] 表达式去析构并释放;
用系统默认的 ::operator new() 分配的的内存要交给系统默认的 ::operator delete() 去释放;
用 placement new 创建的对象要用 placement delete 去析构(其实就是直接调用析构函数);

::operator new() 的两种...
阅读全文 | 评论次数(0) | 浏览次数(425) | 所属类型(C++)

[2012-03-08 18:12] 数据结构之数组c++实现

typedef  unsigned int  UINT;
template<typename T>
class CMyArray  
{
public:
        enum Status
        {
                OVERFLOW=-1,
                OK=1,
                ERROR
        };
        int m_length;
        int m_size;
        T *pdata;
public:
        CMyArray();
        CMyArray(UINT n);
        void Init(UINT nSize);
        void Release();
        UINT GetSize();
        T Set(UINT n,T...
阅读全文 | 评论次数(0) | 浏览次数(427) | 所属类型(C++)

[2012-03-06 19:54] 重载

运算符重载
运算符重载使得用户自定义的数据以一种更简洁的方式工作
运算符重载时,运算符函数只能定义为两种方式:
类的成员函数        
友员函数
这两种方式非常相似,关键区别在于
        成员函数具有 this 指针
        友员函数没有 this 指针
用成员函数重载运算符
运算符通过运算符函数重载。
运算符函数是一种特殊的成员函数,语法形式为:
        type   operator  @  ( 参数表 )
        {
            // 相对于该类定义的操作
        }
不能重载的运算符:.  ,  * ,   :: ,   ? ,    sizeof
重载应注意的问题:
           ...
阅读全文 | 评论次数(2) | 浏览次数(689) | 所属类型(C++)

[2012-03-06 12:44] 虚函数

多态性是使用不同的对象的相同方法时能产生不同动作 
C++支持两种多态性,一种是编译时的多态性,另一种是运行时的多态性 
在面向对象的系统中,有两种编译方式,及早期联编和滞后联编
早期联编是指系统在编译时就决定如何确定某一动作
滞后联编是指系统在运行时动态确定某一动作,也称为动态联编

编译时的多态性
编译时的多态性是通过重载函数来实现的。重载函数有下述两种方式: 
1 在一个类中说明的重载 :在一个类中说明的重载函数之间,靠所带的参数个数或参数类型的不同加以区分。在编译时系统就可以根据参数上的差异来区分这些函数 
2 基类成员函数在派生类中的重载:一种是参数有所差别的重载 ...
阅读全文 | 评论次数(2) | 浏览次数(871) | 所属类型(C++)

[2012-03-05 16:07] 继承

继承
引入继承的目的在于为代码重用提供有效手段
一方面使用继承可以重用先前项目的代码,如果原来的代码不能完全满足要求,还可以做少量的修改,满足不断变化的具体应用要求,
另一方面若某个项目使用了几个非常相似或稍有不同的类,就可以通过派生类的继承性达到函数和数据继承的目的
派生类
——从已有类中派生新的类
B类继承A类,或称从类A派生类B
类A称为基类(父类),类B称为派生类(子类)
       class  派生类名 :访问控制    基类名
        {
        数据成员和成员函数声明
        };
–访问控制 表示派生类对某个基类的继承方式,使用关键字:
        ...
阅读全文 | 评论次数(1) | 浏览次数(687) | 所属类型(C++)

[2012-03-05 10:46] 静态成员

静态成员
关键字 static 可以用于说明一个类的成员;

静态成员提供了一个同类对象的共享机制;

把一个类的成员说明为 static 时,这个类无论有多少个对象被创建,这些对象都共享这一个 static 成员;

静态成员属于类,它不是属于对象的,不会随对象的消失而消失。
一个类中,若将一个数据成员说明为 static ,则该数据称为静态数据成员,无论创建多少个类对象,都只有一个静态数据的拷贝当这个类的第一个对象被创建时,所有 static 数据初始化为 0 ,并且不作其他初始化。

静态数据成员的使用
1. 用来统计对象的个数;
2. 作为一个标志,指示一个特定...
阅读全文 | 评论次数(1) | 浏览次数(674) | 所属类型(C++)

[2012-03-04 15:19] C++成员初始化列表 的作用

区别“赋值” 和 “初始化”这两个概念:

    我们知道普通变量编译器都会默认的替你初始化。他们既能初始化,也能被赋值的,而常量(const)按照其意思只能被初始化,不能赋值。否则与变量就无区别了。所以常量成员(const member)只能用成员初始化列表来完成他们的“初始化”,而不能在构造函数内为他们“赋值”。 
    我们知道类的对象的初始化其实就是调用他的构造函数完成,如果没有写构造函数,编译器会为你默认生成一个。如果你自定义了带参数的构造函数,那么编译器将不生成默认构造函数。这样这个类的对象的初始化必须有参数。如果这样的类的对象来做另外某个类的成员,那么为了初始化这个成员...
阅读全文 | 评论次数(3) | 浏览次数(723) | 所属类型(C++)
页码数(2):  1  2