当前位置:才华君>社会工作>综合指导>

趋势科技的笔试

综合指导 阅读(4.47K)
趋势科技的笔试
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不能释放