1.指针和引用的区别?
1)引用必须初始化,指针不需要;
2)有空指针,没有空引用;
3)引用初始化之后就不能改变,而指针式可以随时指向任意的地址的。
2.将引用作为函数的返回值的格式,好处和需要遵循的原则?
格式:类型标识符 &函数名(形参列表及类型说明){函数体}
好处:不产生返回值的副本
需要注意的是:
1)不能返回局部变量的引用;
2)不能返回函数内部的new分配的内存的引用;
3)可以返回类成员的引用,但是最好是const;
4)+-*/四则运算不能返回引用。
3.什么时候需要使用引用?
流操作符<<和>>、赋值操作符=的返回值,拷贝构造函数的参数,赋值操作符=的参数、其它情况都推荐使用引用。
4.指针和数组的区别?
1)修改内容上的差别
char a[] = “hello”;
a[0] = ‘X’;
char *p = “world”; // 注意p 指向常量字符串
p[0] = ‘X’; // 编译器不能发现该错误,运行时错误
2)Sizeof可以得到数组的容量,但是sizeof(p)不能得到p所指内存的容量,他表示的只是p指针变量的字节数。
3)数组在作为函数的参数的时候自动的退化为同类型的指针。
5.面向对象的三个基本特征?
面向对象的三个基本特征:封装,继承,多态
1)封装:将客观的事物抽象成类,每一个类对自身的数据和方法实行保护
2)继承:广义的继承有三种方式:
实现继承:使用基类的属性和方法而无需额外的编码的能力
可视继承:子窗体使用父窗体的外观和实现代码
接口继承:仅使用属性和方法,实现滞后到子类实现
3)多态:一句话就是:允许将子类类型的指针赋值给父类类型的指针。
这是我今天面试的几个题目,写下来让大家参考下,希望对大家有所帮助。