//
// 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. AngularJS SQL 获取数据

    使用PHP从MySQL中获取数据: <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...

  2. 三言两语之js面向对象初探1

    http://www.cnblogs.com/54td/p/5580994.htm    先是有了这个比较简短但是内容比较丰盈的上篇,现在时间比较充沛,所以详细写来.搞前端的同学经常被其他程序员bs, ...

  3. vim 标签命令

    设置标签:ma 跳转到标签:`a 查看当前所有标签:marks 删除标签:delmarks a 删除所有标签:delmarks! 不包括[A-Z]和[0-9]标签.

  4. Ajax验证用户名是否存在模板

    Jsp 页面 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8 ...

  5. Linux Tomcat 开机自启动的方法

    修改Tomcat/bin/startup.sh 为: export JAVA_HOME=/usr/java/j2sdk1.4.2_08 export CLASSPATH=$CLASSPATH:$JAV ...

  6. vs发布的程序不依赖运行时库msvcp100.dll

      [摘要:msvcr100.dll:MS Visual C Runtime 100 msvcp100.dll:MS Visual CPp 100 vs建立的工程,运转时库的范例有MD(MDd)战MT ...

  7. windows pip安装 更新

    升级: http://blog.csdn.net/liuchunming033/article/details/39578019 pip坏了如何重新安装: https://github.com/pyp ...

  8. Python for Infomatics 第12章 网络编程四(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 12.7 用BeautifulS ...

  9. phpunit测试学习 2 分类总结断言涉及哪些方面

    11:27 2015/12/9phpunit测试学习 2,  分类总结断言涉及哪些方面先推荐windows快速打开某处路径下的cmd,进入测试状态:可以在文件夹中,按住Shift+鼠标右键,这时候你就 ...

  10. linux install wineQQ

    Linux上没有QQ太麻烦了,查了一下讲wineQQ安装上去了,亲测可以使用滴---就是版本低,安装步骤如下: 一.安装Wine 1.添加PPA sudo add-apt-repository ppa ...