C/C++面试基础知识

1.C/C++的区别

  • C是面向过程的结构化语言,语言简洁,可移植性好
  • C++是C的扩充,增加了面向对象的功能,具有封装、继承、多态的特性

2.C/C++中struct的区别

  • C中的struct是自定义数据类型,C++中struct是抽象数据类型
  • C中struct没有访问修饰符,而C++中的struct有
  • C不能在struct内定义函数,也不支持继承,C++中struct中可以定义函数,也可以继承。

3.C++中struct和class的区别

  • struct的默认成员访问权限是public,class的默认成员访问权限是private
  • struct的默认继承类型是public,class的默认继承类型是private

4.数组和指针的区别

  • 数组名是数组首元素地址,是指针常量
  • 指针是特殊变量,它存储的是另一个变量的地址
  • 指针之间可以相互赋值,而数组不可以
  • 对数组名求sizeof(),是整个数组的大小,对指针求sizeof()值为指针本身大小

5.指针和引用的区别

  • 引用是给变量取别名,以此来共享变量,节省内存,指针在定义时必须初始化,并且在使用过程中不能改变其值
  • 指针是变量,它存储另一个变量的地址,本身也占有内存,指针在定义是不必初始化,使用过程中可以改变其值
  • 有指向空值的指针,没有空值的引用

6.static作用

  • 函数体内的static变量,作用域是该函数体内,它只被分配一次内存,在下次使用时仍保持上次的值
  • 模块内的static变量,作用域是该模块内,不能被其它模块使用,也就是不能声明为extern
  • 模块内的static函数,只能在该模块范围内被调用,对其它模块不可见
  • 类里面的static变量为整个类所有,对所有类对象只有一份拷贝

7.虚函数

类中函数加Virtual关键字修饰便是虚函数,虚函数主要是用来实现多态的。派生类可以重新定义虚函数,基类可以通过指针来访问与派生类的同名函数。

  • 如果期望派生类重新定义一个成员函数,应该在基类中把此函数设为virtual
  • 以一个单一指令调用不同函数,这种性质成为多态(polymorphism)
  • 抽象类中的虚函数不打算被调用,不应该定义它,应该把它设置为纯虚函数(在函数声明之后加上'=0'即可)
  • 虚函数派生下去仍为虚函数,而且可以省略virtual关键字

8.Const作用

const关键字至少有下列n个作用:  

  • 欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;  
  • 对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;  
  • 在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;  
  • 对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的 成员变量;  
  • 对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”。

就写这么多了,后续还会再补充

猜你喜欢

转载自blog.csdn.net/sinat_40766770/article/details/88565939