#include "stdafx.h"
#include "iostream"
#include "animal.h"
using namespace std;
#include <iostream>
using namespace std;

class Array
{
public:
Array(unsigned int s);
~Array();
//当析构函数不是虚函数时,???
virtual void add(int e);
//基类的成员函数不是虚函数时,派生类调用基类的成员函数
//基类的成员函数是虚函数时,子类调用派生类的成员函数
int get(unsigned int i) const;
protected:
int* a;
unsigned int size, num;
};
class sortedArray:public Array
{
public:
sortedArray(unsigned int s);
~sortedArray();
//基类要定义了虚函数 子类也需要定义虚函数吗?
void add(int e);
private:

};

Array::Array(unsigned int s)
{
size = s;
num = 0;
a = new int[s];
}

Array::~Array()
{
//delete[] a;
}

void Array::add(int e)
{
if (num<size)
{
a[num] = e;
num++;
}
}

int Array::get(unsigned int i) const
{
if (i<size)
{
return a[i];
}
return 0;
}

//子类
sortedArray::sortedArray(unsigned int s) :Array(s)
{
}

sortedArray::~sortedArray()
{
}
void sortedArray::add(int e)
{
if (num >= size)
{
return;
}
int i = 0, j;
if (i < num)
{
if (e < a[i])
{
for (j = num; j > i; j--)
{
a[j] = a[j - 1];
}
a[i] = e;
//break;
}
/*i++;*/
}
if (i == num)
{
a[i] = e;

}
num++;
}
void fun(Array& b)
{
int i;
for (i = 10; i >= 1; i--)
{
b.add(i);
}
for (i = 0; i < 10; i++)
{
cout << b.get(i)<< ",";
}
cout << endl;
}
//析构函数是对象在结束自己的生命周期时,系统自动调用析构函数
//问题1.出现野指针。问题2.sa调用派生类sortArray的add时结果调用的是基类Array的add函数
//问题3.出现了4次析构函数说明结束了4次生命周期

int _tmain()
{
Array a(10);
fun(a);

sortedArray sa(10);

fun(sa);
return 0;
}

最新文章

  1. 黑马程序员——ARC机制总结和用ARC建立模型
  2. Python爬虫入门一之综述
  3. 用介个新的blog咯..
  4. Unity进阶技巧 - 动态创建UGUI
  5. 【转】VC的MFC中重绘函数的使用总结(整理)
  6. 和S5933比较起来,开发PLX9054比较不幸,可能是第一次开发PCI的缘故吧。因为,很多PCI的例子都是对S5933,就连微软出版的《Programming the Microsoft Windows Driver Model》都提供了一个完整的S5933的例子。 在这篇有关DDK的开发论文里。
  7. 在本地没有安装Oracle的情况下,使用plsql远程连接数据库
  8. Java虚拟机—Java8内存模型(整理版)
  9. 使用 Django-debug-toolbar 优化Query 提高代码效率
  10. SpringMVC(2):Spring MVC入门
  11. BZOJ1146 [CTSC2008]网络管理Network 树链剖分 主席树 树状数组
  12. python3 独立环境 virtualenv &amp; conda
  13. 搞定&#39;express&#39; 不是内部或外部命令,也不是可运行的程序或批处理文件
  14. 十八、Spring框架(AOP)
  15. Dev-FAT-UAT-PRO
  16. Java数组、集合的三种遍历方式(包懂)
  17. Windows10右键添加“在此处打开命令窗口&quot;
  18. 【Git】创建一个空分支
  19. (二) Mysql 数据类型简介
  20. Fang Fang---hud5455(字符串处理)

热门文章

  1. 浮窗WindowManager view返回和Home按键事件监听
  2. 现代数字信号处理——AR模型
  3. 百科知识 hta文件如何打开
  4. PHP ORM操作MySQL数据库
  5. 简单理解javascript中的原型对象,实现对之间共享属性和行为
  6. Android pull to Refresh 导入出错?
  7. Long-term stable release maintenance
  8. ARM Holdings
  9. java监听器演示样例
  10. Python Journey