c++容易的虚函数测试

c++简单的虚函数测试

#include <iostream>
using namespace std;

class A
{
public:
	A()
	{
	}

	virtual ~A()
	{
	};

public:
	virtual void fun()
	{
		cout << "A::fun()" << endl;
	}

	virtual void fun2()
	{
		cout << "A::fun2()" << endl;
	}

	void test()
	{
		cout << "A::test()" << endl;
		test2();
		fun2();
	}

	void test2()
	{
		cout << "A::test2()" << endl;
	}

};

class B:public A
{
public:
	B()
	{
	}

	virtual ~B()
	{
	}

public:
	virtual void fun()
	{
		cout << "B::fun()" << endl;
		test();
	}

	virtual void fun2()
	{
		cout << "B::fun2()" << endl;
	}

	void test1()
	{
		cout << "B::test1()" << endl;
		test();
	}

	void test2()
	{
		cout << "B::test2()" << endl;
	}
};

int main()
{
	cout << "========== use pointer =============" << endl;
	A* pa = new B();
	pa->fun();
	delete pa;
	cout << endl << endl;

	cout << "========== use object =============" << endl;
	B b;
	b.test1();

	return 0;
}
 

 

执行结果

 

========== use pointer =============

B::fun()

A::test()

A::test2()

B::fun2()

 

 

========== use object =============

B::test1()

A::test()

A::test2()

B::fun2()