#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;
}

C和C++语言&的更多相关文章

  1. C语言 · 高精度加法

    问题描述 输入两个整数a和b,输出这两个整数的和.a和b都不超过100位. 算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储.对于这种问题,一般使用数组来处理. 定义一个数组A ...

  2. Windows server 2012 添加中文语言包(英文转为中文)(离线)

    Windows server 2012 添加中文语言包(英文转为中文)(离线) 相关资料: 公司环境:亚马孙aws虚拟机 英文版Windows2012 中文SQL Server2012安装包,需要安装 ...

  3. iOS开发系列--Swift语言

    概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...

  4. C语言 · Anagrams问题

    问题描述 Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的.例如,"Unclear"和"Nuclear ...

  5. C语言 · 字符转对比

    问题描述 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 1:两个字符串长度不等.比如 Beijing 和 Hebei 2:两个字符串不仅长度相 ...

  6. JAVA语言中的修饰符

    JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...

  7. Atitit 项目语言的选择 java c#.net  php??

    Atitit 项目语言的选择 java c#.net  php?? 1.1. 编程语言与技术,应该使用开放式的目前流行的语言趋势1 1.2. 从个人职业生涯考虑,java优先1 1.3. 从项目实际来 ...

  8. 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】

    说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...

  9. InstallShield 脚本语言学习笔记

    InstallShield脚本语言是类似C语言,利用InstallShield的向导或模板都可以生成基本的脚本程序框架,可以在此基础上按自己的意愿进行修改和添加.     一.基本语法规则      ...

  10. 用C语言封装OC对象(耐心阅读,非常重要)

    用C语言封装OC对象(耐心阅读,非常重要) 本文的主要内容来自这里 前言 做iOS开发的朋友,对OC肯定非常了解,那么大家有没有想过OC中NSInteger,NSObject,NSString这些对象 ...

随机推荐

  1. react 路由传参

    今天,我们要讨论的是react router中Link传值的三种表现形式.分别为通过通配符传参.query传参和state传参. ps:进入正题前,先说明一下,以下的所有内容都是在react-rout ...

  2. ollydbg快速定位方便调试

    在ollydbg调试的时候,会看到大量的汇编代码(远多于源代码),代码中有大量的函数嵌套调用,调试起来周期很长,难度比较大. 所以我们希望能快速定位到代码,以下是快速定位的四种方法: 1.Goto命令 ...

  3. PJSIP 调用的GUID库

    PJSIP库产生随机序列串用到GUID库,针对不同的平台使用的方式不同:Windows平台下使用的是Windows系统API CoCreateGuid,在方法 pj_generate_unique_s ...

  4. [转]FTP服务器搭建

    下面先说第一中方法: 1.在win7上先开启ftp服务:这里点击确定后,可能会要等一会儿,完成后有时系统会提示重启 2.打开   计算机-->管理-->   在这里我们可以看见刚刚添加的服 ...

  5. 基于bootstrap的纯静态网站目录

    一.博客页面 二.登陆页面 三.信息采集 四.管理后台 五.网站汇总(基于上边四个功能) 因为样式统一采用bootstrap的样式,所以不做介绍 样式导入可以将bootstrap下载至本地(有自动补齐 ...

  6. SpringMVC学习(一):搭建SpringMVC-注解-非注解

    文章参考:http://www.cnblogs.com/Sinte-Beuve/p/5730553.html 一.环境搭建: 目录结构: 引用的JAR包: 如果是Maven搭建的话pom.xml配置依 ...

  7. Linux随笔记

    Linux配置apt-get源地址 以Ubuntu配置网易开源镜像站为例: 访问地址:http://mirrors.163.com/,找到对应的系统. 先将source.list进行备份,执行: su ...

  8. 第一个php小程序(学习)

    </pre><pre name="code" class="php"><? php $b=array("name&quo ...

  9. makefile编写---.c .cpp 混合编译makefile 模板

    # c.cpp混合编译的makefile模板 # # BIN = client_system BASE_INSTALL_DIR := /opt/arm-2009q1 BUILD_TOOL_DIR := ...

  10. SDWebImage学习

    SDWebImage学习 SDWebImage版本是:'4.2.2' SDWebImage是iOS开发中常用的图片加载的库,能下载并缓存图片.这次就着重介绍SDWebImage的特色功能:下载与缓存. ...