1.考虑函数原型void hello(int a,int b=7,char* pszC="*"),下面的函数调用中,属于
不合法调用的是:
A hello(5) B.hello(5,8) C.hello(6,"#") D.hello(0,0,"#")
答案是C,经过验证,其实就是考函数的重载。
2.求输出结果
#include<iostream.h>
class CBase{
public:
CBase(){cout<<”constructing CBase class”<<endl;}
~CBase(){cout<<”destructing CBase class”<<endl;}
};
class CSub : public CBase{
public:
CSub(){cout<<”constructing CSub class”<<endl;}
~CSub(){cout<<”destructing CSub class”<<endl;}
};
void main()
{ CSub obj; }
答:
constructing CBase class
constructing CSub class
destructing CSub class
destructing CBase class
父类先构造(这个不难理解吧),先构造的后析构,其实就是一个进栈出栈的过程。
参照上面的代码,假设定义了ClassA* pA2,下面正确的代码是:
A.pA2=static_cast<ClassA*>(pB);//类型转换无效
B.void* pVoid=static_cast<void*>(pB);
pA2=static_cast<ClassA*>(pVoid);
C.pA2=pB;//无法隐式转换
D.pA2=static_cast<ClassA*>(static_cast<ClassC*>(pB));