!测试你是不是真正的C++程序员!(技术贴 )
世界上除了细节没有别的事情,所以看看下面的问题吧!欢迎大家踊跃回答
答对6题以上说明你是合格的C++ programmer!
1.请说明下面的例子中static 关键字的用途:
①static int a = 100;
②static int func_1(int iParam)
{
...
}
③int func_2(int iParam)
{
static int b = 0;
...
};
④class CA
{
static int c;
static int func_3(int iParam);
...
};
2. 请说明下面的例子中 const 关键字的用途:
①const int d = 100;
const char * pStr_0 = “abcd”;
char * const pStr_1 = “ABCD”;
②class CB
{
int func_4(int iParam) const;
int func_5(int iParam);
...
};
3。 在下面的func_4()的实现中,哪些语句是不合法的?
int CB::func_4(int iParam) const
{
d ++;
int * pd = &d;
*pd ++;
pStr_0[0] = 0;
pStr_0 = pStr_1;
pStr_1[0] = 0;
pStr_1 = pStr_0;
...
}
4。 有关内存申请和释放
// 请说明下面两种方式申请内存有何异同
// 方式 1
int *p1;
p1 = malloc(sizeof(int)*100);
// 方式 2
int *p2;
p2 = new int [100];
5。请说明下面两种方式申请内存有何异同
struct _st
{
int a;
int b;
...
} * st_1, *st_2
// 方式 1
st_1 = malloc(sizeof(_st)*100);
// 方式 2
st_2 = new _st [100];
6。 请说明下面两种方式申请内存有何异同
class CA
{
public:
CA();
~CA();
...
} * ca_1, *ca_2
// 方式 1
ca_1 = malloc(sizeof(CA)*100);
// 方式 2
ca_2 = new CA [100];
7。 请说明下面几种方式释放内存有何异同
int *p;
p = new int [100];
// 方式 1
free(p);
// 方式 2
delete p;
// 方式 3
delete [] p;
8 请说明下面几种方式释放内存有何异同
class CA
{
public:
CA();
~CA();
...
} * pCA;
pCA = new CA [100];
// 方式 1
free(pCA);
// 方式 2
delete pCA;
// 方式 3
delete [] pCA;