Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3878741
  • 博文数量: 356
  • 博客积分: 10458
  • 博客等级: 上将
  • 技术积分: 4734
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-24 14:59
文章分类

全部博文(356)

文章存档

2020年(17)

2019年(9)

2018年(26)

2017年(5)

2016年(11)

2015年(20)

2014年(2)

2013年(17)

2012年(15)

2011年(4)

2010年(7)

2009年(14)

2008年(209)

分类: C/C++

2008-05-09 15:56:34

1.常用的几何类数据结构有哪些(tips:例如单项链表)?简述其各自的特点
2.面向对象编程中的三大基本概念
3.什么是虚函数
4.查找设计上的失误和错误
class A
{
public:
A(int nSize)
{
m_pData = new int[nSize];
m_nSize = nSize;
memset(m_pData, 0, m_nSize);
    }
~A() {delete m_pData;}
void GetBuffer(int* pData, int nSize) {m_pData = pData; m_nSize = nSize;}
void Set(int nIndex, int nValue) {m_pData[nIndex] = nValue;}
int Get(int nIndex) {return m_pData[nIndex];}
virtual int Search (int nValue) = 0;
private;
int* m_pData;
int m_nSize;

};

class B :public A
{
public:
virtual int Search(int nValue)
{
for (int i=0; i < m_nSize; i++)
{
if (m_pData[i] == nValue) return  i;
}
return -1;
}
};
1.数据结构的 单双向  循环链表  栈 对列 堆 树 图
2.封装 继承 多态
3.虚函数用来表现基类和派生类的成员函数之间的一种关系. 
虚函数的定义在基类中进行,在需要定义为虚函数的成员函数的声明前冠以关键字 virtual. 
基类中的某个成员函数被声明为虚函数后,此虚函数就可以在一个或多个派生类中被重新定义. 
在派生类中重新定义时,其函数原型,包括返回类型,函数名,参数个数,参数类型及参数的先后顺序,都必须与基类中的原型完全相同. 虚函数是重载的一种表现形式,是一种动态的重载方式. 
4.
这两个类问题挺多的
....
析构
访问权限问题
set与get似乎有可能会越界操作 
 
class A
{
    public:
    A(int nSize)
    {
        m_pData = new int[nSize];           // 没有判断nSize是否大于1
        m_nSize = nSize;
        memset(m_pData, 0, m_nSize);
    }
   
    ~A() 
    {
        delete m_pData;   // delete[] m_pData
    }

    void GetBuffer(int* pData, int nSize) 
    {
        m_pData = pData;      // 个人理解应该是将pData内容复制到m_pData中,用memcpy 
        m_nSize = nSize;
    }

    void Set(int nIndex, int nValue) 
    {
        m_pData[nIndex] = nValue;   // 没检查nIndex是否越界
    }
 
    int Get(int nIndex) 
    {
        return m_pData[nIndex];   //同上
    }

    virtual int Search (int nValue) = 0;

    private:
    int* m_pData;
    int m_nSize;

};

class B :public A
{
public:
    virtual int Search(int nValue)
    {
        for (int i=0; i  < m_nSize; i++)
        {
            if (m_pData[i] == nValue) return  i;  // 无法访问到m_nSize
        }
     return -1;
    }
}; 
 
 
阅读(1510) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~