#include "stdafx.h"
#include <iostream>
using namespace System;
using namespace std;
class a
{
public:
a(){
std::cout<<"this is a;";
}
virtual void fun();
};
void a::fun()
{
std::cout<<"this is a::fun;";
}
class b:public a
{
public:
b(){
std::cout<<"this is b.";
}
void fun()
{
std::cout<<"this is b:fun"<<std::endl;
}
};
void abtext(a x)
{
x.fun();
}
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
a* x1=new b();
abtext(*x1);
return 0;
}
父类指针指向子类,构造函数调用顺序,首先调用父类构造函数,再调用子类构造函数,因此本程序先输出this is a;再输出this is b.。完成初始化。调用abtext(*x1);时,由于形参是类a,故应该调用父类的fun()函数,输出this is a::fun;