C++面试题 virtual

// TestCppConstructor.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include <iostream>
using namespace std;
class A
{
public :
	A(int i = 0)
	{
		m_i = i;
		cout << m_i << "A的构造函数" << endl;
	}
	~A()
	{
		cout << m_i << "A的析构函数\n";
	}
	void f()
	{
		cout << m_i << "A::f()\n";
	}
private:
	int m_i;
};

class B:public A
{
public:
	A m_A;	//类型为父类 的 成员变量
	B(int i):m_A(i)
	{
		cout << "B的构造函数\n";
	}
	~B()
	{
		cout << "B的析构函数\n";
	}
	void f()
	{
		cout << "B::f()\n";
	}
};

int _tmain(int argc, _TCHAR* argv[])
{
	A *pa = new B(10);
	//output:	
	//	0A的构造函数
	//	10A的构造函数
	//  B的构造函数
	pa->f();
	//0A::f()	[因为f不为virtual]
	delete pa;
	//0A的析构函数	[因为~A不为virtual]

	getchar();
	return 0;
}
posted @ 2011-05-22 21:48  庚武  Views(317)  Comments(0Edit  收藏  举报