首页 > 其他分享 >面试汇总

面试汇总

时间:2023-02-09 18:00:20浏览次数:37  
标签:函数 指向 汇总 面试 地址 引用 派生类 指针

一.指针和数组的区别

1.数组:是一系列相同数据的集合,是开辟连续的内存空间,sizeof是数组占用内存的大小,而并非是数组中元素的个数。

2.指针是地址,存放变量的地址,sizoef占用的内存大小和操作系统有关,32位是占用4个字节,64位是占用8个字节。

二.使用const的好处

提高代码安全性。提高代码的可读性和可维护性。提高程序的效率。

三、指针和引用的区别

相同点:

1.都是地址的概念;

2.指针指向一块内存,它的内容是所指内存的地址;

3.引用是某块内存的别名。

不同点:

1.指针是一个变量,存储的是变量的地址,引用是给变量起一个别名。

2.指针可以为空,引用一经定义必须初始化。

3.指针可以改变指向,但是引用初始化之后不可以改变指向。

4.指针可以有多级操作,但是引用只有一级。

5.sizeof指针得到的是本指针的大小,但是引用得到是引用所指向变量的大小。

6.不存在指向空值的引用,但是有指向空值的指针。

四、对于static关键字的用法

对于函数内部,当不用static关键字修饰的时候,它是存放在栈区,当函数调用结束后,局部变量就销毁了。

而当使用static修饰了函数中变量,它存放在静态存储区,当整个程序执行期间,它分配的空间一直存在,只不过外部是无法访问的。这与全局区

使用static修饰的全局变量不同,他是本文件可以进行访问,同样,在整个程序期间的所分配的控件都存在。

五、函数重载

函数重载的三个条件,相同函数名的参数个数不同、参数类型不同、参数顺序不同满足其中一个即可。

那么当函数返回值类型不同可以作为函数重载,答案是不同。但是函数重载可以是返回值类型不同。

原理:c++编译器在链接的时候,找到汇编之后生成.o文件里面的符号表,进行链接,main函数能通过函数传参的不同找到它需要调用函数的地址。

六、虚函数的实现原理

虚函数的用法:可以让派生类重写基类的成员函数实现多态。虚函数实现多态的机制,严格来说是动态多态,是在运行期间实现的。

虚函数的实现原理:每个虚函数都会有一个与之对应的虚函数表,该虚函数表的实质是一个指针数组,存放的是每一个对象的虚函数入口地址。对于一个派生类来说,它会继承基类的虚函数表,同时增加自己的虚函数入口地址,如果派生类重写了基类的虚函数的话,那么会继承过来的虚函数入口地址将被派生类的重写函数入口地址代替。那么在程序运行时发生动态绑定,将父类绑定到实例化的对象实现多态。

七、析构函数可以是虚函数吗?

可以

当基类的指针指向派生类对象,如果delete掉该指针,那么就会调用该指针指向的派生类析构函数,然后派生类析构函数又自动调用析构函数,这样派生类的对象才被完全释放干净。如果不声明虚析构函数,会导致派生类对象释放不完全。

八、构造函数可以是虚函数吗?

不可以

因为调用构造函数之后才可以生成一个对象,假设构造函数是虚函数,因为虚函数存在虚函数表中,但是虚函数表又需要虚函数表指针去找,但是虚函数指针是存放在对象中的,这就前后矛盾.

九、宏和内联函数的区别

1.宏定义不是函数,但是使用起来像函数,宏是在预处理阶段的。内联函数是在编译阶段的。

2.内联函数里面不允许有开关语句、控制语句和循环语句。

3.宏相当于是直接替换,是没有类型检查的。但是内联函数是在编译阶段进行类型检查的。

 

标签:函数,指向,汇总,面试,地址,引用,派生类,指针
From: https://www.cnblogs.com/lihongbing1997-1004/p/17106552.html

相关文章

  • React面试题---setState是同步执行还是异步执行?
    1.React中setState是同步执行还是异步执行?什么时候是同步什么时候是异步?1importReact,{Component}from"react";2importReactDOMfrom"react-dom";3//......
  • SAOI 题解汇总
    题解汇总A.Chery的魔法药水与lrc的韭菜所有部分分代码及标程均在这里。这个题目是我们前面的月考卷子改编后的idea,去年就出了,今年翻出来经过加强得到了这道入门题......
  • java基础知识精华总结 java面试题
    1、文件拷贝,把一个文件的内容拷贝到另外一个文件里packageorder;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;import......
  • 肖sir____面试课程第4讲_项目讲解
    项目讲解:一、项目准备年限长:准备4个项目年限短:准备3个项目比如:字节:不要银行项目和保险项目有关项目银行:银行业务、保险阿里:java技能==============================......
  • VUE相关面试题目01
    一、MVVM是什么;   MVC:               MVVM的描述:                常见库实现数据双向绑定的效果......
  • Python面试_可迭代对象&迭代器&生成器
    #可迭代对象&迭代器>**可迭代对象**:使用内置的iter()函数可以获取迭代器的对象。如果对象实现了能返回迭代器的__iter__方法,那么对象就是是可迭代的。序列都可以迭代;实......
  • 肖sir____面试课程第3讲_项目数据
    一、项目的周期1、新项目 定义:从无到有一般时间:2个月、3个月,6个月,1年,2年,3年2、迭代项目:1个月、2个月、3个月、6个月3、敏捷开发项目周期特别短:2周、3周、一个月4......
  • 【Java面试】Runnable和Thread比较
    在线程使用过程中,我们肯定会用到Runnable与Thread,前者的实现方式是实现其接口即可,后者的实现方式是继承其类。两者实现方式带来最明显的区别就是,由于Java不允许多继承,因此......
  • C语言字符串操作函数汇总
    1.strcpy函数语法:strcpy(str1,str2)功能:将字符串str2复制到字符串str1中,并覆盖str1原始字符串,可以用来为字符串变量赋值。返回:str1注意:1.字符串str2会覆盖str1中的全部字......
  • 肖sir____面试课程第2讲_测试流程
    测试流程一、提问方式1、你们公司的测试流程是什么?2、给你需求你会怎么做?3、你讲下工作流程?4、你是如何开展工作的?答案:H模型 =================================......