求下面程序的输出值:
class A{
public:
A() {func(0);};
virtual void func(int data) {printf("A1 :%d\n",data);}
virtual void func(int data) const {printf("A2 :%d\n",data);}
void func(char *str) {printf("A3 :(%s)\n",str);}
};
class B:public A{
public:
void func() {printf("B1 :%s\n","");}
void func(int data) {printf("B2 :%d\n",data);}
void func(char *str) {printf("B3 :(%s)\n",str);}
};
int main()
{
A *pA;
B b; // A1:0
const A *pcA;
pA=&b;
pA->func(1); // B2:1
pA->func("test"); // A3:(test)
A().func(1);//产生:了 两句 : A1:0
// A1:1
pcA=&b;