c++爱问的面试问题
2015-09-20 20:10
239 查看
1.static_cast,dynamic_cast,reinterpret_cast,const_cast四种转换。
2.const行为
3.malloc/free, new/delete差额
4.虚拟功能,虚拟继承。多重继承。多重虚拟继承。
5.深拷贝。浅拷贝。
6.类成员初始化顺序是按声明顺序。
7.virtual函数系动态绑定。而缺省參数是静绑定的。
class A{
public:
virtual void func(int a =10){cout<<"A "<<a<<endl;}
};
class B:public A{
virtual void func(int a =20){cout<<"B "<<a<<endl;}
};
A* p = new B;
p->func();
输出:B 10
8.与(&),或(|)。异或(^)在算法中的运用。
9.内联函数什么时候不展开
在内联函数内不同意用循环语句和开关语句。
假设内联函数有这些语句。则编译将该函数视同普通函数那样产生函数调用代码,递归函数(自己调用自己的函数)是不能被用来做内联函数的。内联函数仅仅适合于仅仅有1~5行的小函数。对一个含有很多语句的大函数,函数调用和返回的开销相对来说微不足道,所以也没有必要用内联函数实现.
10 .int a[] =
{1,2,3,4,5};
int *ptr =(int*)(&a+1);
printf("%d %d",*(a+1),*(ptr-1));
答案 2 5
数组名本身就是指针,再加上个&,就变成双指针了,这里的双指针就是指二维数组。加1,就是数组总体加一行。
11.int *p1=new int[10];该语句给指针p1分配内存,没有对指针初始化,
int *p2=new int[10]();该语句给指针p2分配内存,并初始化指针.
12.main函数之前会运行全局对象的构造函数。
13.
char **storm = (char**)(new char
);// error
应该改成 char **storm =
new char*
);
2.const行为
3.malloc/free, new/delete差额
4.虚拟功能,虚拟继承。多重继承。多重虚拟继承。
5.深拷贝。浅拷贝。
6.类成员初始化顺序是按声明顺序。
7.virtual函数系动态绑定。而缺省參数是静绑定的。
class A{
public:
virtual void func(int a =10){cout<<"A "<<a<<endl;}
};
class B:public A{
virtual void func(int a =20){cout<<"B "<<a<<endl;}
};
A* p = new B;
p->func();
输出:B 10
8.与(&),或(|)。异或(^)在算法中的运用。
9.内联函数什么时候不展开
在内联函数内不同意用循环语句和开关语句。
假设内联函数有这些语句。则编译将该函数视同普通函数那样产生函数调用代码,递归函数(自己调用自己的函数)是不能被用来做内联函数的。内联函数仅仅适合于仅仅有1~5行的小函数。对一个含有很多语句的大函数,函数调用和返回的开销相对来说微不足道,所以也没有必要用内联函数实现.
10 .int a[] =
{1,2,3,4,5};
int *ptr =(int*)(&a+1);
printf("%d %d",*(a+1),*(ptr-1));
答案 2 5
数组名本身就是指针,再加上个&,就变成双指针了,这里的双指针就是指二维数组。加1,就是数组总体加一行。
11.int *p1=new int[10];该语句给指针p1分配内存,没有对指针初始化,
int *p2=new int[10]();该语句给指针p2分配内存,并初始化指针.
12.main函数之前会运行全局对象的构造函数。
13.
char **storm = (char**)(new char
);// error
应该改成 char **storm =
new char*
);
相关文章推荐
- C++ string详解
- 如何解决C/C++中stack overflow问题
- 使用GetProcAddress获取C++重载函数
- C++中虚析构函数
- C++那些细节--inline关键字
- 实现一个数组中奇数和偶数分开,奇数在前部分,偶数在后部分 时间复杂度为O(n),空间复杂度为O(1)
- OC学习将C语言字符串转换为OC字符串
- C++ 数组
- c语言学习笔记(1)基本数据类型及auto,register,static分析
- C语言 --- 函数指针(初级)
- C语言实现单链表-04版
- C++中CString,int,string,char*之间的转换
- Eclipse环境下通过C语言连接MySQL数据库方法
- c++实现两个元素进栈和出栈的顺序
- C++拷贝构造函数详解
- c++地址问题
- C++虚继承的概念
- C/C++堆和栈的区别
- 项目19.2 能够对齐的数据
- 黑马程序员--C语言学习笔记之运算符