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

c++面试爱问的问题

2014-08-20 11:33 253 查看
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*
);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: