继承时的覆盖问题

class A
{
public:
	int ival;
	A()
	{
		ival = 1;
	}
	void print(){
		cout << ival << endl;
	}
};

class Beta : public A
{
public: 
	int ival;
	Beta()
	{
		ival = 2;
	}
};

void main()
{
	Beta b;
 	b.print();
 	cout << b.ival << endl;
	getchar();
}

程序的输出结果为:1 2。子类中的ival覆盖掉了父类中同名的成员变量,但是子类继承了父类的print函数,此函数打印的应该是父类中被覆盖的ival的值,也就是1。在执行子类的构造函数体前,先调用父类的构造函数。

posted on 2010-06-13 11:08  ︶ㄣ第二名  阅读(322)  评论(1编辑  收藏  举报