/*
* Copyright (c) 2014, 烟台大学计算机学院
* All rights reserved.
* 文件名称:test.cpp
* 作 者:刘畅
* 完成日期:2015 年 5 月 29 日
* 版 本 号:v1.0
*
* 问题描述:阅读程序。
* 输入描述:;
* 程序输出::
(1)虚函数
#include <iostream>
using namespace std;
class A
{
int a;
public:
A():a(5){}
virtual void print()const {cout<<a;}
};
class B:public A
{
char b;
public:
B(){b='E';}
void print() const {cout<<b;}
};
void show (A &x) {x.print();}
int main()
{
A d1,*p;
B d2;
p=&d2;
d1.print();
d2.print();
p->print();
show (d1);
show (d2);
return 0;
}
运行结果:
(2)虚析构函数
#include <iostream>
using namespace std;
class BASE
{
private:
char c;
public:
BASE(char n):c(n){}
virtual ~BASE(){cout<<c;}
};
class DERIVED:public BASE
{
private:
char c;
public:
DERIVED(char n):BASE(n+1),c(n){}
~DERIVED(){cout<<c;}
};
int main()
{
DERIVED d('X');
return 0;
}
运行结果:
(3)纯虚函数
#include <iostream>
using namespace std;
class Base
{
public:
virtual void Who() =0;
};
class FirstDerived:public Base
{
public:
void Who() {cout<<"F";}
};
class SecondDerived:public Base
{
void Who() {cout<<"S";}
};
int main()
{
FirstDerived first_obj;
SecondDerived second_obj;
Base &bref=first_obj;
bref.Who();
bref=second_obj;
bref.Who();
Base *bp;
bp=&first_obj;
bp->Who();
bp=&second_obj;
bp->Who();
return 0;
}
运行结果: