#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. objective-c 类目(Category)和延展(Extension)

    类目的基本概念: 如果有封装好的一个类,随着程序功能的增加,需要在类中增加一个方法,那我们就不必在那个类中做修改或者再定义一个子类,只需要在用到那个方法时添加一个该类的类目即可. 1.在类目定义的方法 ...

  2. xamarin android 获取根证书代码

    Java.Security.KeyStore keyStore = Java.Security.KeyStore.GetInstance("AndroidCAStore"); ke ...

  3. py3处理数据库

    处理mysql使用 pymysql模块 import pymysql conn=pymysql.connect(host='127.0.0.1',port=3306,user='root',passw ...

  4. 赵雅智_Fragment

    当我们须要动态的多界面切换的时候,就须要将UI元素和Activity融合成一个模块. 在2.3中我们一般通过各种Activity中进行跳转来实现多界面的跳转和单个界面动态改变.在4.0或以上系统中就能 ...

  5. Cocos2d-x 3.0 打造一个全平台概念文件夹

    Cocos2d-x 3.0 打造一个全平台概念文件夹http:// www.eoeandroid.com/thread-328055-1-1.html

  6. Android的logger机制分析

    分析安卓的Logger机制 一.概述 Logger机制是在Android系统中提供的一个轻量级的日志系统,这个日志系统是以驱动程序的形式在内核空间实现的,在用户空间分别提供了Java接口和C/C++接 ...

  7. enter键触发的函数

    enter键触发的函数示例: <input type="text" onkeydown="fun();"> function fun() { if( ...

  8. Hadoop 50090端口的页面, Replication的数字是真实的文件备份数吗? (不是)

    红色方框的部分,代表Hadoop系统,人工设定的文件备份数,但不是实际的备份数.文件备份数 不会大于集群机器的总数目(因为备份文件不会同时存在一台机器上,这样就没有意义),所以如果总集群数目是2,即使 ...

  9. 系统安全-Man in the middleattack

    窃听VS加密(解决数据机密性) 加密由两部分组成:算法&秘钥(算法要够复杂,秘钥要够安全) 对称加密:(Symmetric encryption) 采用单秘钥密码系统的加密方法,同一个秘钥可以 ...

  10. LeetCode:二叉树的非递归中序遍历

    第一次动手写二叉树的,有点小激动,64行的if花了点时间,上传leetcode一次点亮~~~ /* inorder traversal binary tree */ #include <stdi ...