1、Q:什么是多态
A:当子类覆盖了父类的虚函数时,父类的指针指向子类对象时,会调用虚函数,根据具体创建的对象是谁来决定执行谁的函数
2、Q:用一段代码来判断机器是16位的还是32位的
A:1、sizeof(int),32位的是4,16位的是2
2、
#include<stdio.h>
int main()
{
int num = 32768;
if(num > 32767)
printf("32位\n");
else
printf("16位\n");
}
3、
对0取反
#include<stdio.h>
int main()
{
unsigned num = ~0;
if(num >65535)
printf("32位\n");
else
printf(16位\n);
}
3、Q:写一个函数,计算1-2+3-4+5-6…+n(n的值很大)
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int sum = 0;
for(int i=1;i<=n;i++)
{
if(i%2 == 1)
sum += i
else
sum += i*(-1);
}
printf("%d\n",sum);
}
4、Q:写一个函数,统计输入字符串的各个字符出现的次数
#include<stdio.h>
#include<string.h>
int main()
{
char str[100];
scanf("%s",str);
int buf[256] = {0};
for(int i=0;i<strlen(str);i++)
{
buf[str[i]-'0']++;
}
for(int i=0;i<128;i++)
{
if(0 != buf[i])
printf("%c %d\n",i+'0',buf[i]);
}
printf("\n");
}
5、Q:有了malloc和free为什么用new/delete
A:因为在面对非内部数据的对象而言,光是malloc/free无法满足动态对象的要求,对象在创建时要执行构造函数,释放时要自动执行析构函数,而malloc/free时库函数而不是运算符,编译器没有权力调用它们来执行构造函数和析构函数
6、Q:id[sizeof(unsigned long int)]这种写法是正确的吗?为什么?
A:正确 这个 sizeof是编译时运算符,编译时就确定了 ,可以看成和机器有关的常量。
7、Q:指针和引用的区别
A:1、指针是一个实体(数据类型),而引用实质上就是个别名
2、指针不需要初始化,而引用必须要初始化
3、指针在初始化之后能够改变,而引用不行(引用不能代表另外一个对象)
4、const只能用于指针,而不能用于引用
5、指针有多级,而引用没有
6、引用不能为空,而指针可以为空
7、指针的大小就是本身的大小,而引用的大小是它代表的对象的大小
8、指针自增是指向下一个地址,而引用是代表对象的值增加
9、程序需要为指针分配内存区域,引用不需要
8、Q:C++中有哪些传参方法
A:1、值传递
2、指针传递
3、引用传递
PS:如果是C的话,是值传递和指针传递,只写值传递也可以,因为从严格意义上来讲,指针传递也是值传递的一种,复制的是地址
9、Q:VC的DEBUG和RELEASE分别代表什么意思
A:Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。
10、Q:C++中struct和class区别
A:具有不同的默认访问控制属性,struct为public类型,而class为private类型
11、Q:描述一下重载,隐藏,覆盖
A:在同一作用域下,函数名相同,具有不同的参数列表的叫作重载
不同作用域下的同名函数,构成隐藏关系
父子类之间有虚函数,且函数签名完全相同,返回值必须是同类型或者父子类(子类的返回值要能向父类隐式转换),构成重载关系
12、Q:if(10A)
if(A10)
第一种方法好还是第二种好?为什么?
A:第一种好,因为如果你写成了=的话,=左边不能是常量,所以会报错,而第二种会略过