c++中多态的理解

多态的定义:同一种操作作用于不同的对象,有不同的解释,产生不同的结果。

c++中的多态分为两类:

1.编译时的多态:类中非虚成员的参数和返回值,确定不同的操作。

2.运行时的多态:到程序的运行的时候,才根据实际情况决定实现何种操作。派生类继承并覆写基类的虚函数成员。

以下是运行时多态的一个简单示例:

#include "stdafx.h"
#include 
#pragma warning(disable:4996)
#include 

using namespace std;

class base{
public:
	virtual void print(void){
		cout << "this is base" << endl;
	}
};

class child1:public base
{
public:
	virtual void print(void){
		cout << "this is child1" << endl;
	}
};


class child2:public base
{
public:
	virtual void print(void){
		cout << "this is child2" << endl;
	}
};

void fun(base ¶)
{
	para.print();
}

int main(int argc, char *argv[])
{
	base test;
	child1 a;
	child2 b;
	cout << "*************************************" << endl;
	fun(test);//调用类base的打印
	cout << "*************************************" << endl;
	fun(a);//调用类child1的打印
	cout << "*************************************" << endl;
	fun(b);//调用类child2的打印

	return 0;
}

c++中多态的理解_第1张图片

值得注意的是:上面代码的void fun(base &para)参数是引用。如果没有引用符号&,输出的结果就是如下情形:

c++中多态的理解_第2张图片

你可能感兴趣的:(interview,c++面试)