IBM筆試題

1.以下代碼輸出結果是

intp=1;
int q=-1;
int i=-p++-q;
printf("%d \n",i);

:結果是0i=-p++-q;相當於i=-p-q;p++;最後p=2q=-1。因爲-的優先級大於++
2
。以下代碼輸出結果是什麼?
注:原題爲第三列代碼,前兩列爲作爲對照添加的代碼

#include<iostream>

using namespacestd;

class CA

{         

public:

            inti;

            virtualvoidff(){i=1;}

            voidprint()  {printf("%d\n",i);}

};

class CB:publicCA

{

private:inti;

public:

            virtualvoidff(){i=2;}

            voidprint(){printf("%d\n",i);}

};

class CC:publicCB

{

private:

            inti;

public:

            virtualvoidff(){i=3;}

            voidprint(){printf("%d\n",i);}

};

int main()

{

            CB*A=newCC();

            A->ff();//調用的是cc類的ff()

            A->print();//調用的是CB類的print/()CB類中的i沒有被賦值,下面兩個對象輸出結果原因同上

            CC*B=(CC*)newCA();

            B->ff();

            B->print();

            CC*C=(CC*)newCB();

            C->ff();

            C->print();

}

輸出三個隨機數。

#include<iostream>

using namespacestd;

class CA

{         

public:

            inti;

            virtualvoidff(){i=1;}

            virtualvoidprint() {printf("%d\n",i);}

};

class CB:publicCA

{

private:inti;

public:virtualvoidff(){i=2;}

            virtualvoidprint(){printf("%d\n",i);}

};

class CC:publicCB

{

private:inti;

public:

            virtualvoidff(){i=3;}

            virtualvoidprint(){printf("%d\n",i);}

};

int main()

{CB*A=newCC();//構造的是CC對象

            A->ff();//調用的是CC類中的ff()

            A->print();//調用的是CC類中的print()

            CC*B=(CC*)newCA();

            B->ff();

            B->print();

            CC*C=(CC*)newCB();

            C->ff();

            C->print();

}

輸出 3 1 2

#include<iostream>

using namespacestd;

class CA

{         

public:inti;

            virtualvoidff(){i=1;}

            virtualvoidprint() {printf("%d\n",i);}

};

class CB:publicCA

{

private:  inti;

public:  virtualvoidff(){i=2;}

};

class CC:publicCB

{

private:  inti;

public:

            virtualvoidff(){i=3;}

};

int main()

{

            CB*A=newCC();

            A->ff();

            A->print();

            CC*B=(CC*)newCA();

            B->ff();

            B->print();

            CC*C=(CC*)newCB();

            C->ff();

            C->print();

}

輸出:隨機數 1 隨機數.因爲只有CA類中有print()函數,只有構造的是CA類的對象時纔會輸出設定的值。


3
C++c好的地方。(多選)

C++是面嚮對象語言,編程更加人性化。利於實現封裝、繼承、多態。c是面向過程語言
4
inline函數的特點 (多選)

inline函數是將要調用的函數代碼替換到調用的地方,這樣能減少程序執行時的來回跳轉,提高程序執行的效率,但是會增加目標程序代碼量,即增加了空間開銷。
5
inline宏的不同(多選)

內聯函數和宏的區別在於,宏是由預處理器對宏進行替代,而內聯函數是通過編

譯器控制來實現的。而且內聯函數是真正的函數,只是在需要用到的時候,內聯函數

像宏一樣的展開,所以取消了函數的參數壓棧,減少了調用的開銷。你可以象調用函

數一樣來調用內聯函數,而不必擔心會產生於處理宏的一些問題。內聯函數與帶參數宏定義的另一個區別是,內聯函數的參數類型和返回值類型在聲明中都有明確的指定;而帶參數宏定義的參數沒有類型的概念,只有在宏展開以後,才由編譯器檢查語法,這就存在很多的安全隱患。

具體參考http://blog.csdn.net/lw370481/article/details/7311668
6
。什麼叫做抽象

抽象 抽象是哲學的根本特點, 抽象不能脫離具體而獨自存在。

我們所看到的大自然景象就是大自然的實物在我們腦海中的抽象。抽象就是我們對某類事物共性的描述

具體來說,抽象是指:

1、將複雜物體的一個或幾個特性抽出去,而只注意其他特性的行動或過程(如頭腦只思考樹本身的形狀或只考慮樹葉的顏色,不受它們的大小和形狀的限制)。

2、將幾個有區別的物體的共同性質或特性,形象地抽取出來或孤立地進行考慮的行動或過程。

抽象是認識複雜現象過程中使用的思維工具,即抽出事物本質的共同的特性而暫不考慮它的細節,不考慮其他因素。

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