博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

面试题目之C++(一)

Posted on 2012-02-20 12:06  wangwangkunkun  阅读(108)  评论(0编辑  收藏  举报

Q1: static 作用,static 变量在内存位置,非static 的变量在内存什么位置?

A1: static 可以使在function 里的变量或者类里的变量,保证不变,不会因为函数调用完毕,或者类实例的析构而消失。 static 还可以定义全局 function 或 变量 只在当前文件使用,文件外是不可见的。

       static在内存的静态存储区

       非static 的局部变量存在 栈空间,或者new malloc的是在堆空间中。

 

Q2:  查出下面代码错误。

char * test(int v)
{
char buf[6+1];
switch(v)
{
case 1: strncpy(buf, "Case 1", sizeof(buf));
case 2: strncpy((buf,"Case 2", sizeof(buf));
case 3: strncpy((buf, "Case 3", sizeof(buf));
case deafult: strncpy((buf, "default", sizeof(buf));
}
return &buf;
}

int main()
{

char * p = test(2);
cout << p << endl;
}

A2:1,没有break;

       2,return &buf 是错误的,数组名是没有地址的。

       3,应该修改成 char* buf = (char*) malloc (8 * sizeof(char)); return buf;

 

Q3:为什么析构函数不能够被重载?

A3:1,可以通过virtual 实现多态。

       2,因为析构函数不能够被显示调用,重载会影响原来功能。