C++简答题总结(一)---考研初试、复试、期末冲刺、面试皆可使用

本文概述了面向对象编程中的关键特性如封装、继承、多态,以及友元函数的利弊、内联函数的作用、指针和引用的区别、类的概念、结构体和共用体的异同、构造函数和析构函数、静态数据成员和C++的动态内存分配。
摘要由CSDN通过智能技术生成
  1. 简述面向对象三大特性
    1. 封装:封装是把客观事物抽象成类,并且把自己的属性和方法提供给可信的类或对象操作,对不可的隐藏。通过封装,对象的内部具体操作的实现细节被隐藏,只有特定的接口暴露给外部。
    2. 继承:继承允许一个类继承另一个类的属性和方法。子类可以重用父类的代码,并且可以添加新的属性和方法或覆盖父类的方法。继承支持代码重用,提高了代码的可维护性和扩展性。
    3. 多态:多态是指通过类的继承,使得同一个函数可以根据调用它的对象不同而做出不同的反应。多态是指用一个相同的函数名定义不同的函数实现,调用这些函数执行不同操作,但是有相似的行为,即用同样的接口访问不同的函数实现。多态性提高了代码的灵活性和可扩展性,使得程序更容易扩展和维护。

  1. 简述友元函数的利与弊
    1. 利:在实现类之间数据共享的时候,减少系统开销,提升效。因为普通函数无法访问私有的成员,而友元函数 可以方便、快捷的访问私有成员
    2. 弊:由于友元能够直接访问到私有成员,所以它破坏了面向对象的封装机制,所以在实际开发中,要减少使用友元函数。

  1. 简述一下内联函数

内联函数是C++中的一种函数特性,通过在函数定义前面加上关键字“inline”实现。

内联函数告诉编译器在每个调用点上直接插入函数体,而不是生成函数调用的过程,这样就可以减少函数调用的开销,提高函数运行的效率。

同时内联函数最初的目的是用于代替部分的#define宏定义,之所以要代替宏定义,是因为宏的编写有很多限制,且宏没有类型检查,无论对或错都是直接替换。而内联函数完美的解决了这些问题。

内联函数适用于函数体较小且频繁调用的情况,但不是所有标记为“inline”的函数都会被内联,最终到底会不会进行内联,还是要由编译器决定。

  1. 简述指针和引用的区别
    1. 相同点:都是有关地址的概论,指针指向一个变量在内存中的地址,而引用则是地址的别名
    2. 不同点:
      • 引用必须被初始化,但是不分配存储空间
      • 引用被初始化后不能被改变,但是指针可以改变所指对象
      • 不存在指向空值的引用,但是存在指向空值的指针

  1. 简述一下指针数组和数组指针
    1. 指针数组
      • 指针数组是一个数组,它的每一个元素都是指针
      • 其中每个指针可以指向不同类型的数据或相同类型的数据
      • 可以通过索引来访问数组中的每一个指针,并可以通过指针来访问其所指向的数据
    2. 数组指针
      • 数组指针是一个指针,它指向数组的首元素
      • 它可以指向数组中的任何位置,并可以通过算术运算来访问数组中的其他元素
      • 数组指针的声明中必须指定数组的类型和维度

  1. 简述一下什么是类

类是面向对象编程中的基本概念,用来描述具有相同的属性和方法的对象的集合。类定义了对象的属性和行为,并且提供了对这些属性和行为的访问控制,其中包括公有、私有以及保护。类是对象的抽象、对象是类的实例。

  1. 结构体和共用体的异同
    1. 同:
      • 它们都是用来组织多个数据成员的数据结构
      • 它们的成员都是通过成员选择运算符’.’进行访问
      • 结构体的所有成员在内存中是按顺序存储的,而共用体全部成员共享一块内存空间
      • 结构体的内存占用是全部成员所占内存大小之和,而共用体的内存占用取决于最大成员所占用内存空间大小
      • 结构体可以为每个成员分别赋初值,而共用体只能给第一个成员赋值。

  1. 简述一下构造函数和析构函数
    1. 构造函数

构造函数是一种特殊的成员函数,在对象被创建时自动调用,用于初始化数据成员;构造函数的名称与类名相同,没有返回类型,void都没有;构造函数可以进行函数重载,所以我们可以定义构造函数;构造函数可以具有参数,称为形参,用于在创建对象时向对象传递初始值。

    1. 析构函数

析构函数同样是一个特殊的成员函数,在对象销毁时自动调用,用于清理对象所分配的资源。析构函数的名称用“~”开头,没有返回类型和参数。与构造函数不同,析构函数不能重载,每个类只能存在一个析构函数。

  1. 简述一下静态数据成员

静态数据成员是指属于类本身而不是类的特定对象的数据成员,类的所有对象共享静态数据成员

它具有以下特性和用法

    1. 共享性
    2. 一次分配
    3. 通过类名访问
    4. 常用于共享状态和全局设置
    5. 不依赖实例化

  1. 简述c++的动态内存分配

在编程的过程中,我们无法预知具体需要多少内存,所需内存的大小需要在运行的时候才能确认,这个时候我们就可以使用c++的动态内存分配机制,用new运算符为给定类型变量在运行时分配内存,这会返回所分配的空间地址,若不再需要动态分配的内存空间,可以使用delete运算符,清空之前由new运算符分配的内存。

  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值