C++走向远洋——52(十三周阅读程序)

*/
 * Copyright (c) 2016,烟台大学计算机与控制工程学院
 * All rights reserved.
 * 文件名:text.cpp
 * 作者:常轩
 * 微信公众号:Worldhello
 * 完成日期:2016年5月22日
 * 版本号: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); 
   cout<<endl; 
   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  
{  
public:  
    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;  
}  

运行结果:



原文地址:https://www.cnblogs.com/chxuan/p/8232204.html