程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++面試題精選

C++面試題精選

編輯:C++入門知識

1、運行如下的C++代碼,輸出是什麼?


[cpp]
class A 

public: 
    virtual void Fun(int number = 10) 
    { 
        std::cout << "A::Fun with number " << number; 
    } 
}; 
  
class B: public A 

public: 
    virtual void Fun(int number = 20) 
    { 
        std::cout << "B::Fun with number " << number; 
    } 
}; 
  
int main() 

    B b; 
    A &a = b; 
    a.Fun(); 

class A
{
public:
    virtual void Fun(int number = 10)
    {
        std::cout << "A::Fun with number " << number;
    }
};
 
class B: public A
{
public:
    virtual void Fun(int number = 20)
    {
        std::cout << "B::Fun with number " << number;
    }
};
 
int main()
{
    B b;
    A &a = b;
    a.Fun();
}
答案:輸出B::Fun with number 10。由於a是一個指向B實例的引用,因此在運行的時候會調用B::Fun。但缺省參數是在編譯期決定的。在編譯的時候,編譯器只知道a是一個類型a的引用,具體指向什麼類型在編譯期是不能確定的,因此會按照A::Fun的聲明把缺省參數number設為10。


這一題的關鍵在於理解確定缺省參數的值是在編譯的時候,但確定引用、指針的虛函數調用哪個類型的函數是在運行的時候。


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved