目录
4.引用作为函数返回值的时候,调用的变量需要加上static修饰
10.如何打破const关键字的限制?--->mutable mutable int num;
14.new delete 和 malloc free 之间的区别?
1.浅谈一下c和c++的理解?
c语言是一个面向过程的一种语言、c++是一种面向对象的一种语言
面向过程:就是按部就班一步一步来,想到每一个步骤需要调用什么函数,按照顺序调用函数。
面向对象:就是把问题分解成一个个对象,而对象不是为了解决某一个步骤,而是为了描述事物在解决过程中的行为。
2.指针和引用的区别?
- 引用必须初始化而指针不用初始化
- 引用初始化之后不能改变对象,而指针则可以通过地址来改变对象
- 引用不能赋予空值,而指针则可以赋予空值
- 引用是原来变量的别名,指针则是一种新的变量
3.值传递、地址传递、引用传递的区别?
值传递:实参把值传递给形参、与原来的实参就没有关系、相当于产生了一个新变量、一个新的地址。
地址传递:形参的改变会影响实参,会创建一个指针变量开辟一个新空间,指针保存着实参的地址。
引用传递:形参的改变会影响实参,相当于实参的别名,不需要开辟新的空间
4.引用作为函数返回值的时候,调用的变量需要加上static修饰
Int &num(){
Static int num;//延长生命的周期、返回值是引用为变量本身
num=100;
return num;
}
5.命名空间:
- 避免出现同名冲突、避免命名空间污染
- C++中命名空间只有一个
- 类、对象、c++库函数都在std命名空间定义
6.常引用
- const int& ret 常引用
- 可以直接调用常量
- 常引用作为函数形参的时候、在函数中只能以只读的形式存在、值不能改变
7.C语言const关键字的作用
- const修饰变量的时候定义就被初始化、值不能被改变
- const修饰函数形参变量的时候、该变量在函数中值不能被改变
- const修饰类成员变量的时候,成员函数调用成员变量只能以只读的形式
8.static关键字的作用
c语言:
- static修饰全局变量、只能在本文件被调用
- static修饰函数、只能在本文件被调用
- static修饰局部变量、变为静态变量作用域不变延长生命周期直至整个程序结束为止、多次被调用只能调用一次
C++:
- 类的内部成员用static修饰后变为静态成员变量
- 静态成员必须要进行类外声明->分配空间、未初始化为默认值
- 该类的多个对象可以共享该静态成员变量、静态成员变量不建议使用对象进行调用(语法没有报错、但是没有什么意义)、可以直接通过类名进行调用。
- 静态成员函数->没有this指针只能访问静态成员变量、只能调用静态成员函数