//
// main.cpp
// 2013-7-17作业3
//
// Created by 丁小未 on 13-7-17.
// Copyright (c) 2013年 dingxiaowei. All rights reserved.
//
#include <iostream>
usingnamespacestd;
class A
{
public:
A()
{
cout<<"A\n";
}
virtual void func()
{
cout<<"A::func\n";
}
virtual void func1()
{
cout<<"A::func1\n";
}
};
class B : publicA
{
public:
B()
{
cout<<"B\n";
func();
}
void func1()
{
cout<<"B::func\n";
}
};
int main(void )
{
A *a = newB(); //先创建B对象,又因为B是继承的A,所以在构造B之前要先构造A,所以输出A,然后构造B,输出B,然后调用func(),输出A::func\n
a->func(); //由于a中的func()方法虽然定义的是虚函数,但是由于B类中没有该重名函数,所以直接调用A中的func方法,输出A::func
a->func1(); //由于A中的func1方法是虚函数,且B中也有该方法,所以就调用B中的func1方法,输出B::func\n
B b; //实例化一个B对象,先实例化他的基类,调用A的构造方法,打印输出A,然后在调用B的构造方法,打印输出B,在调用A中的func方法,打印输出A::func\n
b.func(); //调用继承自A中的func方法
}