C++常见面试题
Swift Lv6

记录一下C++常见的面试八股文。

C++内存分配有哪几种方式?

  • 从静态存储区分配:内存在程序编译的时候已经分配好,这块内存在整个程序的运行期间都存在,例如全局变量、静态变量。
  • 在栈上创建:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存有限。
  • 在堆上分配:程序在运行的时候用malloc或new申请任意多的内存,由程序员手动free或delete来释放内存。动态内存的生存期有开发者自己决定,使用非常灵活,但也会导致内存泄漏的问题。

struct和class的异同?

  • 同:struct和class定义类,都可以继承。
  • 异:struct的默认继承权限和默认访问权限是public,而class的默认继承权限和默认访问权限是private。

重载和重写的区别?

  • 重载:是指同一可访问区内被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型。
  • 重写:指派生类中存在重新定义的函数。其函数名,参数列表,返回值类型,所有都必须同基类中被重写的函数一致。只有函数体不同(花括号内),派生类调用时会调用派生类的重写函数,不会调用被重写函数。重写的基类中被重写的函数必须有 virtual 修饰。
Powered by Hexo & Theme Keep
Unique Visitor Page View