您的位置:首页 > 编程语言 > C语言/C++

面试题目之C++(一)

2012-02-20 12:06 197 查看
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,因为析构函数不能够被显示调用,重载会影响原来功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: