Blacklvhui C++多态

多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphism),字面意思多种形状。
多态的目的:多口重用

定义一个People类

#include <iostream>

class People
{
#pragma mark - Init
public:
    People();
    ~People();

#pragma mark - Method
public:
    virtual void ();  

#pragma mark - get&set
public:


#pragma mark - Variable
private:
    std::string name_;
    std::string gender_;
    int age_;
    double hight_;
    double weight_;
};

People.cpp

#include "People.h"

People::People()
{}
People::~People()
{}

void People::Speak()
{
    std::cout << "I'm a people" << std::endl;
}

Yellowpeople.h

#include "People.h"

class YellowPeople : public People   //继承
{
public:
    virtual void ();

    void shout();
};

Yellowpeople.cpp

#include "YellowPeople.h"

void YellowPeople::Speak()
{
    std::cout << "I'm a yellow people" <<std::endl;
}

Whitepeople.h

#include "People.h"

class WhitePeople : public People
{
public:
    virtual void ();
};

Whitepeople.cpp

#include "WhitePeople.h"

void WhitePeople::Speak()
{
    std::cout << "I'm a white people" <<std::endl;
}

Blackpeople.h

#include "People.h"

class BlackPeople : public People
{
public:
    virtual void ();

};

Blackpeople.cpp

#include "BlackPeople.h"

void BlackPeople::Speak()
{
    std::cout << "I'm a black people" << std::endl;
}

main.cpp

#include <iostream>
#include "YellowPeople.h"
#include "WhitePeople.h"
#include "BlackPeople.h"
using namespace std;

void test(People &obj)         //使用基类People中的Speak()函数
{
    obj.Speak();
}

int main()
{
    People people;
    YellowPeople yellow;
    WhitePeople white;
    BlackPeople black;

    people.Speak();
    yellow.Speak();
    yellow.Speak();
    white.Speak();
    black.Speak();

    test(people);          //体现了多态
    test(yellow);
    test(white);
    test(black);

    return 0;
}

输入结果为:

I'm a people
I'm a yellow people
I'm a white people
I'm a black people
I'm a people
I'm a yellow people
I'm a white people
I'm a black people