Tencent2014實習筆試題 南京

#include<iostream>
using namespace std;
class Base
{
public:
virtual int foo(int x) //基類的純虛函數,派生類中可以重新定義改函數
{
return  x*10;
}
int foo(char x[10]) //虛函數foo的重載函數。函數名相同,函數參數不同。
{

return sizeof(x)+10; //本題的關鍵。sizeof(x)中數組x[10]作爲函數的參數時,

//x由數組已經退化成指針了.所以sizeof(x)=4.

//(指針表示地址,在32爲系統中,地址佔32個二進制位(4個字節)

//所以sizeof(x)==4.
}
};
class Derived :public Base 
{
int foo(int x) //是重寫Base中的純虛函數
{
return x*20;
}
virtual int foo(char x[10]) //派生類自定義的純虛函數  在派生類的子類中才能排上用場。在本體中純屬干擾作用
{
return sizeof(x)+20;
}
};
int main()
{
Derived stDerived;
Base *pstBase=&stDerived;
char x[10];
cout<<sizeof(x)<<endl;
printf("%d\n",pstBase->foo(100)+pstBase->foo(x));
return 0;

}



答案是:2014.

可惜打錯了。純虛函數和sizeof操作符的使用!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章