趨勢科技的筆試

才智咖 人氣:5.34K
趨勢科技的筆試
1、#include 
class A{ 
  public: 
    A(){func(0);}; 
    virtual void func(int data){printf("A1 :%dn",data);} 
    virtual void func(int data) const{printf("A2 :%dn",data);} 
    void func(char *str){printf("A3 %s)n",str);} 
  }; 
class B:public A{ 
public: 
    void func(){printf("B1 :%sn","");} 
    void func(int data){printf("B2 :%dn",data);} 
    void func(char *str){printf("B3 %s)n",str);} 
  }; 
int main() 

    A *pA; 
    B b; 
    const A *pcA; 
    pA=&b; 
    pA->func(1); 
    pA->func("test"); 
    A()(1); 
    pcA=&b; 
    pcA->func(2); 
    return 0; 

程式執行的結果: 
A1 :0 
B2 :1 
A3 test) 
A1 :0 
A1 :1 
A2 :2 
1) 
基類的指標指向派生類物件:那麼該指標只能夠呼叫基類所定義的'函式,但是如果該函式為虛擬函式,則呼叫該派生類自己的成員函式。(B2 :1) 
2) 
如果以派生類的指標指向基類物件,則必須事先做明顯的轉型操作,但是這種做法很危險。 
2、 
include 
template 
void func(const int &t) 

    cout< 

template 
void func(const T&t) 

    cout< 

int main() 

    func(10.3); 
    func(1000); 
    return 0; 

程式執行結果: 
10.3 
1000 
如果上述函式改為 
include 
void func(const int &t) 

    cout< 

template 
void func(const T&t) 

    cout< 

int main() 

    func(10.3); 
    func(1000); 
    return 0; 

則程式的執行結果為: 
10.3 
1100 
如果使用函式的非模板形式,不能在前面加上template關鍵字。 
3、 
改錯: 
include 
class klass 

public: 
    klass(){} 
private: 
    ~klass(){} 
    void func(int n){ 
      cout<<"klass!!"< 
      }      public: 
    void test(){ 
      func(100); 
    } 
}; 
int main() 

    klass k; 
    (); 
    return 0; 

執行後程序顯示:error C2248: ’klass::~klass’ : cannot access private member declared in class ’klass’ 
證明解構函式的屬性必須為public。 
但是,如果把klass k改為klass* pk; pk=new klass; pk->test();程式通過,但是klass不能釋放
TAGS:筆試