⑴ 大工14春另外兩個的答案
1-5:CAADC
6-10:ABBAD
第五題我搜的答案是C,但我個人認為有錯,因為派生類中還可以不給出純虛函數的實現,這樣也就是說派生類中也可以不定義自己的該函數的版本
1-5:BAABB
6-10:BBBBB
⑵ 軟考題目
靜態綁定發生於數據結構和數據結構間,程序執行之前. 靜態綁定發生於編譯期, 因此不能利用任何運行期的信息. 它針對函數調用與函數的主體,或變數與內存中的區塊。
動態綁定則針對運行期產生的訪問請求,只用到運行期的可用信息. 在面向對象的代碼中,動態綁定意味著決定哪個方法被調用或哪個屬性被訪問,將基於這個類本身而不基於訪問范圍。
答案:B
⑶ c++中動態綁定和靜態綁定是什麼意思
靜態綁定是在編譯階段所執行的函數就已經被確定了的,而動態綁定是在程序執行時才決定使用哪個函數。
⑷ java中的靜態綁定是怎麼個回事
建議您先了解一下java的多態性.所謂靜態綁定就是在程序編譯時就綁定的.java中的變數都是靜態綁定的,方法的話只有static和final(所有private默認是final的)是靜態綁定的.
就是在編譯的時候已經決定了變數的值和應該調用哪個類的方法.你要把它同動態綁定聯系起來才好理解.例如:
class A {
static void method1() {
System.out.println("A.method1()");
}
void method2() {
System.out.println("A.method2()");
}
}
public class B extends A{
// will not override A.method1()
static void method1() {
System.out.println("B.method1()");
}
// will override the A. method2()
void method2() {
System.out.println("B.method2()");
}
public static void main(String[] args) {
A a = new B();
a.method1(); //因為A裡面的method1是static,編譯時就靜態綁定了,所以輸出 A.method1()
a.method2(); //而method2()不是static方法,a是由B new出來的,執行的時候會執行new它的那個類的method2()方法,所以輸出B.method2(),這是java的多態性
}
}
⑸ Java代碼的編譯期綁定和運行期綁定是什麼意思
如果打包成jar的話很好如果是exe的話就有點麻煩了可參考:想要把java生成可執行文件需要第三方軟體的支持,不過在沒有安裝JDK的機器上是不可能運行JAVA程序的,哪怕是編譯成為exe文件。將Java應用程序本地編譯為EXE的幾種方法(推薦使用JOVE和JET)1.從獲得一個TowerJ編譯器,該編譯器可以將你的CLASS文件編譯成EXE文件。2.利用微軟的SDK-Java4.0所提供的jexegen.exe創建EXE文件,這個軟體可以從微軟的網站免費下載,地址如下:7.Instantiations公司的JOVE/jove/ejovesystem.htmJOVE公司合並了以前的SuperCede,一個優秀的本地編譯器,現在SuperCede已經不復存在了。8.JToEXEBravoZuluConsulting,Inc開發的一款本地編譯器,本來可以從該公司的網頁上免費下載的,不過目前在該公司的主頁上找不到了。
⑹ c++裡面什麼時候用到動態聯編(綁定),什麼時候用到靜態聯編
聯編是指一個計算機程序自身彼此關聯的過程。按照聯編所進行的階段不同,可分為兩種不同的聯編方法:靜態聯編和動態聯編。 靜態聯編 靜態聯編是指聯編工作出現在編譯連接階段,這種聯編又稱早期聯編,因為這種聯編過程是在程序開始運行之前完成的。 在編譯時所進行的這種聯編又稱靜態束定。在編譯時就解決了程序中的操作調用與執行該操作代碼間的關系,確定這種關系又稱為束定,在編譯時束定又稱靜態束定。下面舉一個靜態聯編的例子。 #include class Point
{
public: Point(double i, double j)
{ x=i; y=j; }
double Area()
const { return 0.0; }
private: double x, y; };
class Rectangle:public Point { public: Rectangle(double i, double j, double k, double l);
double Area() const { return w*h; } private: double w, h; };
Rectangle::Rectangle(double i, double j, double k, double l):Point(i, j) { w=k; h=l; } void fun(Point &s) { cout<< }
void main()
{ Rectangle rec(3.0, 5.2, 15.0, 25.0); fun(rec); }
該程序的運行結果為: 0 輸出結果表明在fun()函數中,s所引用的對象執行的Area()操作被關聯到Point::Area()的實現代碼上。這是因為靜態聯編的結果。在程序編譯階段,對s所引用的對象所執行的Area()操作只能束定到Point類的函數上。因此,導致程序輸出了所不期望的結果。因為我們期望的是s引用的對象所執行的Area()操作應該束定到Rectangl類的Area()函數上。這是靜態聯編所達不到的。 動態聯編 從對靜態聯編的上述分析中可以知道,編譯程序在編譯階段並不能確切知道將要調用的函數,只有在程序執行時才能確定將要調用的函數,為此要確切知道該調用的函數,要求聯編工作要在程序運行時進行,這種在程序運行時進行聯編工作被稱為動態聯編,或稱動態束定,又叫晚期聯編。 動態聯編實際上是進行動態識別。在上例中,前面分析過了靜態聯編時,fun()函數中s所引用的對象被束定到Point類上。而在運行時進行動態聯編將把s的對象引用束定到Rectangle類上。可見,同一個對象引用s,在不同階段被束定的類對象將是不同的。那麼如何來確定是靜態聯編還是動態聯編呢?C++規定動態聯編是在虛函數的支持下實現的。 從上述分析可以看出靜態聯編和動態聯編也都是屬於多態性的,它們是不同階段對不同實現進行不同的選擇。上例中,實現上是對fun()函數參數的多態性的選擇。該函數的參數是一個類的對象引用,靜態聯編和動態聯編和動態聯編實際上是在選擇它的靜態類型和動態類型。聯編是對這個引用的多態性的選擇。
⑺ 靜態綁定的介紹
靜態綁定是指在程序編譯過程中,把函數(方法或者過程)調用與響應調用所需的代碼結合的過程稱之為靜態綁定。
⑻ 動態綁定與靜態綁定的說法不正確的是( )
所謂綁定是指,對於參與多態行為的類型,他們具有多態行為的介面是在公共基類的設計中就預先確定的。而非綁定則對於參與多態行為的類型,他們的介面沒有預先定義。 在C++中通過繼承實現的多態是動態綁定,通過模板實現的多態是靜態綁定。動態綁定的介面是在運行期間(動態)完成的,靜態綁定的介面是在編譯期間(靜態)完成的