C++ 虛擬函式 筆試題目--綠盟科技
阿新 • • 發佈:2018-12-29
求下面程式的輸出值:
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;
}
結果: