//
// main.cpp
// Test.cpp
//
// Created by mac on 15/8/11.
// Copyright (c) 2015年. All rights reserved.
//
#include<iostream>
#include<cstring>
using namespace std;
class Person //基类Person
{
private:
string name;
int age;
public:
Person();
virtual ~Person();//虚析构函数
Person(string name,int age);
void setname(string name);
void setage(int age);
virtual void show();//虚成员函数,子类继承后必须要重写该函数
//virtual void show()=0;//纯虚函数,此时该类就不能创建对象了。
};
Person::Person(){};
Person::Person(string name,int age)
{
this->name = name;
this->age = age;
}
void Person::setname(string name)
{
this->name = name;
}
void Person::setage(int age)
{
this->age = age;
}
void Person::show()
{
cout<<"name:"<<name<<","<<"age:"<<age<<endl;
}
Person::~Person(){}; class Student:public Person//基类Person的公有派生类Studnet
{
private:
float score;
string subject;
public:
Student();
virtual ~Student();//virtual可加可不加
virtual void show();//virtual可加可不加
Student(string name,int age,float score,string subject);
};
Student::Student(){};
Student::Student(string name,int age,float score,string subject):Person(name,age)
{
this->score = score;
this->subject = subject;
}
void Student::show()
{
Person::show();
cout<<"score:"<<score<<","<<"subject:"<<subject<<endl;
}
Student::~Student(){};
int main(int argc, const char * argv[])
{
Person p;
p.setname("xiayuanquan");
p.setage();
p.show(); Student stu("lisi",,98.5,"English");
stu.show(); //多态的特性(例1)父类的引用指向子类对象
Person person;
Student st("chenglong",,,"chinese");
person = st;
st.show(); //多态的特性(例2)父类的指针指向子类对象
Person *p2 = new Student("zhangsan",,,"math");
p2->show(); return ;
}

程序运行结果:

name:xiayuanquan,age:
name:lisi,age:
score:98.5,subject:English
name:chenglong,age:
score:,subject:chinese
name:zhangsan,age:
score:,subject:math
Program ended with exit code:

总结:实现多态的三个条件:

1.存在继承关系

2.多态的第一种,父类的引用指向子类对象 或者 多态的第二种,父类的指针指向子类对象。

3.子类必须要重写父类的同名方法

C++:C++的两种多态形式的更多相关文章

  1. Oracle的sql语句的两种判断形式

    Oracle的sql语句的两种判断形式 判断当前列同时改动当前列 判断一个情况改动其他值 一类情况详解:实现的是当num这一列的值为3时,就显示好 以此类推 1)case num when 3 the ...

  2. javascript中字符串的两种定义形式

    1.var s = "this is a string";  var t = "this is also a string"; s.test = 20; 2.v ...

  3. WCF-异步调用和两种客户端形式

    当发布一个服务端之后,客户端可以通过服务端的元数据,用VS2010添加服务引用的方式生成对应的代码.并且可以选择生成相应的异步操作. WCF实现代码,Add操作延时5秒后再返回结果. [Service ...

  4. Java线程的两种实现形式

    一.创建线程的第一种方式:继承Thread类 class Demo extends Thread{ @Override public void run() { super.run(); for(int ...

  5. MFC添加菜单资源与菜单执行函数的两种命令形式

    添加资源->新建一个菜单资源->选择相应的对话框 菜单的执行函数命令形式: COMMAD 是指点击菜单后的执行命令 UPDATE_COMMAND_UI 是指点击菜单后菜单状态的函数

  6. Tree的两种存储形式

    1.xml存储 2.链式结构存储 List<Node> nodes = new List<Node>() { , Name = "中国" }, , Name ...

  7. NGUI 按钮点击事件的两种绑定形式

    面板属性栏绑定 写一个脚本,定义一个Public的方法 Notify中选择物体时,选中自己 然后就可以选择通知到写的那个脚本的里边的public方法 代码绑定 创建一个代码文件,挂载到按钮对象上 代码 ...

  8. java中的堆、栈、常量池以及String类型的两种声明

    参考自http://blog.sina.com.cn/s/blog_798b04f90100ta67.html http://www.cnblogs.com/fguozhu/articles/2661 ...

  9. ios的UIImage的两种不同的图片加载方式 tom猫

    在ios的UI交互设计时,对图片的处理是难免的:不同的处理方式会对内存有不同的影响: ********************************************************* ...

随机推荐

  1. Python 中xrange和range区别

    先看看Python help()的说明 help(range) Help on built-in function range in module __builtin__: range(...) ra ...

  2. AngularJs ng-route路由详解

    本篇基于ng-route来讲下路由的使用...其实主要是 $routeProvider 搭配 ng-view 实现. ng-view的实现原理,基本就是根据路由的切换,动态编译html模板. 更多内容 ...

  3. bootstrap 20161012

    栅格系统 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="u ...

  4. android 教程实例系列

    用户界面部分学起来还真是无处下手哇,总不能一个控件发一篇文吧,略有点费时间啊...这个难道不是边用边学才给力吗..所以我打算从最实用的Button开始下手. 先贴几个链接,好东西: android用户 ...

  5. [perl]字符串转拼音首字母(支持多音字)

    实现的思路是,查表找到该字的所有读音,然后取首字母. 代码: while (<DATA>) { chomp; })(.*)$/; $all =~ s/^\s+//; ### 只保留无音标号 ...

  6. Android实战技巧之十二:Android Studio导入第三方类库、jar包和so库

    第三方类库源码 将一网友的XMPP代码从ADT转到AS时,发现其使用了第三方类库,源码放在了lib下,直接在AS中Import project,第三方类库并没有自动导入进来,看来需要自己动手了. 项目 ...

  7. Java基础知识点2:hashCode()方法

    hashCode()方法基本实现 hashCode方法是Java的Object类所定义的几个基本方法之一.我们可以深入到Object类的源码中去查看: public native int hashCo ...

  8. HDU 3015 Disharmony Trees(树状数组)

    题意:给你n棵树,每棵树上有两个权值X H 对于X离散化 :3 7 1 5 3 6 -> 2 6 1 4 2 5,对于H一样 然后F = abs(X1-X2)   S=min(H1,H2) 求出 ...

  9. Listview的使用

    最近一个多月忙着使用新的技术来做项目,现在项目上线了,嗯,发现android有些生疏了,所以今天特地写了这一篇博客来相信的讲解一些基础知识,同事呢,也可以让我温故知新一下.进入正题. 什么是listv ...

  10. [转载]config文件的一个很好的实现

    以下是转载于网上的一个很好的config文件的实现,留存以备案 //Config.h #pragma once #include <string> #include <map> ...