C++:C++的两种多态形式
//
// 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++的两种多态形式的更多相关文章
- Oracle的sql语句的两种判断形式
Oracle的sql语句的两种判断形式 判断当前列同时改动当前列 判断一个情况改动其他值 一类情况详解:实现的是当num这一列的值为3时,就显示好 以此类推 1)case num when 3 the ...
- javascript中字符串的两种定义形式
1.var s = "this is a string"; var t = "this is also a string"; s.test = 20; 2.v ...
- WCF-异步调用和两种客户端形式
当发布一个服务端之后,客户端可以通过服务端的元数据,用VS2010添加服务引用的方式生成对应的代码.并且可以选择生成相应的异步操作. WCF实现代码,Add操作延时5秒后再返回结果. [Service ...
- Java线程的两种实现形式
一.创建线程的第一种方式:继承Thread类 class Demo extends Thread{ @Override public void run() { super.run(); for(int ...
- MFC添加菜单资源与菜单执行函数的两种命令形式
添加资源->新建一个菜单资源->选择相应的对话框 菜单的执行函数命令形式: COMMAD 是指点击菜单后的执行命令 UPDATE_COMMAND_UI 是指点击菜单后菜单状态的函数
- Tree的两种存储形式
1.xml存储 2.链式结构存储 List<Node> nodes = new List<Node>() { , Name = "中国" }, , Name ...
- NGUI 按钮点击事件的两种绑定形式
面板属性栏绑定 写一个脚本,定义一个Public的方法 Notify中选择物体时,选中自己 然后就可以选择通知到写的那个脚本的里边的public方法 代码绑定 创建一个代码文件,挂载到按钮对象上 代码 ...
- java中的堆、栈、常量池以及String类型的两种声明
参考自http://blog.sina.com.cn/s/blog_798b04f90100ta67.html http://www.cnblogs.com/fguozhu/articles/2661 ...
- ios的UIImage的两种不同的图片加载方式 tom猫
在ios的UI交互设计时,对图片的处理是难免的:不同的处理方式会对内存有不同的影响: ********************************************************* ...
随机推荐
- Ubuntu16.04安装nginx
//ubuntu //安装nginxcurl -LJO http://nginx.org/download/nginx-1.10.1.tar.gz tar zxvf nginx-1.10.1.tar. ...
- jQuery和AngularJS的区别小分析
最近一直在研究angularjs,最大的感受就是它和之前的jQuery以及基于jQuery的各种库设计理念完全不同,如果不能认识到这点而对于之前做jQuery开发的程序员,去直接学习angularjs ...
- ASP.NET MVC与ASP.NET Web Form简单区别与适用场景
概论: Asp.net 微软 提供web开发框架或者技术.分Web Form和ASP.NET MVC.下面简单说明各自优缺点及使用场景. Web Form 优点: 1.支持丰富的服务器控件.如:Gr ...
- Ecplise真机调试(Android)
手机连电脑: 利用豌豆荚等工具安装驱动: 安卓手机打开开发人员选项,usb调试: 可以在cmd中执行sdk文件夹中的adb查看是否连接成功://adb devices 可将adb.exe所在文件路径加 ...
- DataTable.RowFilter 用法
/// <summary> /// 处理DataRow筛选条件的特殊字符 /// </summary> /// <param name="rowFilter&q ...
- WPS 表格筛选两列相同数据
选出B列中的数据是否在A列中出现:用countif 函数,在 B列右侧插入一列,C1输入 = countif 区域中选择 B列的内容区域(选择后加 按F4),条件选择B列所在的内容区域(选择后按F4) ...
- Poj2033
算法想到了,题目坑太多,数组,含‘0’ #include <cstdio> #include <algorithm> #include <cstring> #inc ...
- ACM: NBUT 1107 盒子游戏 - 简单博弈
NBUT 1107 盒子游戏 Time Limit:1000MS Memory Limit:65535KB 64bit IO Format: Practice Appoint ...
- info.plist、pch和四大对象(UIApplication、UIApplicationDelegate、UIWindow、UIViewController)
本文目录 1.程序配置文件info.plist,全局头文件pch 2.应用程序对象UIApplication介绍 3.UIApplicationDelegate介绍,程序启动过程 4.UIWindow ...
- HTML 5 拖放(Drag 和drop)
浏览器支持 Internet Explorer 9.Firefox.Opera 12.Chrome 以及 Safari 5. 1.把标签 draggable 属性设置为 true. 2.向标签添加on ...