趨勢科技的筆試

學識都 人氣:5.46K
趨勢科技的筆試
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:筆試