Virtual Functions

content:


illustrate:

Pure virtual functions and the use of static variables

Sample code:

// Virtual_Functions.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <string>
#include <vector>
#include <iostream>
using namespace std;

class Person
{
public:
    virtual void getdata() = 0;
    virtual void putdata() = 0;
protected:
    string name;
    int age;

};

class Professor : public Person
{
public:
    Professor()
    {
        cur_id = ++id;
    }
    void getdata()
    {
        cin >> name >> age >> publications;
    }
    void putdata()
    {
        cout << name << " " << age << " " << publications << " " << cur_id << endl;
    }
private:
    static int id;
    int publications;
    int cur_id;
};
int Professor::id = 0;

class Student : public Person
{
public:
    Student()
    {
        cur_id = ++id;
    }
    void getdata()
    {
        cin >> name >> age;
        cin.ignore();

        for( int i = 0; i < 6; i++ )
        {
            int data;
            cin >> data;
            score.push_back( data );
        }
    }
    void putdata()
    {
        int sum = 0;
        cout << name << " " << age << " ";

        for( int i = 0; i < 6; i++ )
        {
            sum += score[i];
        }

        cout << sum << " " << cur_id << endl;
    }
protected:
    static int id;
    vector<int> score;
    int cur_id;
};
int Student::id = 0;

//by zhaocl
intmain()
{
    int n;
    cin >> n;

    while( n-- )
    {
        int type;
        cin >> type;

        if( type == 1 )
        {
            Professor please;
            pf.getdata();
            pf.putdata();
        }
        else if( type == 2 )
        {
            Student st;
            st.getdata();
            st.putdata();
        }
    }

    system( "pause" );
    return 0;
}


Knowledge points:

1. The use of pure virtual functions

2, the use of static variables

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326902215&siteId=291194637