1. 程式人生 > >C++ 虛擬函式 筆試題目--綠盟科技

C++ 虛擬函式 筆試題目--綠盟科技

求下面程式的輸出值:

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;
  pcA->func(2);            //    A1:2
 return 0;
}

結果: