C++基础概念复习

前言

本篇文章作基础复习用,主要是在C++学习中遇到的概念总结,后续会继续补充。如有不足,请前辈指出,万分感谢。

1、什么是封装,有何优点,在C++中如何体现封装这一特性?

封装是面向对象编程(OOP)中的一个重要概念。 它将数据(成员变量)和操作这些数据的函数(成员函数)捆绑在一起,形成一个类。并且对外部隐藏了类的内部实现细节,只提供一些公共的接口来访问和操作类中的数据。
例如,把汽车看成一个类,驾驶员不需要知道发动机是如何工作的(内部细节),只需要知道通过操作方向盘、油门、刹车等接口来驾驶汽车。
优点: 数据隐藏和安全性,代码的可维护性和可修改性,提高代码的复用性。
在C++中的实现: C++ 通过访问修饰符来实现封装。主要有public(公共的)、private(私有的)和protected(受保护的)三种。
(补充:继承具有传递性,继承不具有对称性)

2、什么是虚基类?有何作用?

语法上,在继承方式前加上virtual关键字来声明虚基类
例如,假设有类A,类B和类C都虚继承自A,然后类D又同时继承自B和C。此时类A就是类B和类C 的虚基类。
在这里插入图片描述
作用: 多重继承会出现菱形继承问题会导致二义性,如果A不是虚基类,那么在D中会有两份A的副本。使用虚基类可以避免这种情况,确保基类A在派生类B、C中只有一个实例。
在这里插入图片描述

3、什么是友元函数?友元函数的作用是什么?它是否破坏了封装性?

友元函数的定义:
在 C++ 中,友元函数是一种定义在类外部,但可以访问类的私有和受保护成员的函数。通过在类中使用friend关键字来声明友元函数,并且友元函数在类中声明时的属性是public
在这里插入图片描述

作用:
增强灵活性(有时候,我们可能需要一个外部函数来访问类的私有成员,以实现一些特定的功能。例如,在操作符重载中,当我们想让某个操作符能够直接访问类的私有成员进行运算时,友元函数就很有用。)
方便实现不同类之间的交互(当多个类之间需要紧密协作,并且需要互相访问对方的私有数据来完成某个功能时,友元函数可以提供一种方便的途径。)

是否破坏封装性:
友元打破了类的封装性,使得类的非成员函数可以访问类的私有成员,但也为实现一些复杂逻辑提供了便利。

4、什么是模板?C++中模板分为哪两种类型?它们的作用是什么?

模板的定义:
模板就像是一个模具,根据不同的参数(数据类型等)可以生成不同具体类型的代码。它允许程序员编写能够处理多种不同数据类型的代码,而不必为每种数据类型都重复编写相似的代码。
两种类型:

函数模板template <typename T >
类模板template <typename T1> class class_name{
   
    };//其中template T1表示模板参数表,由类型参数和非类型参数组成。

在这里插入图片描述在这里插入图片描述

作用是什么:
函数模板: 函数模板是用于创建通用函数的模板。它可以根据调用时提供的参数类型自动生成相应的函数版本。

类模板:可以使用类模板为类定义一种模式,使得类中的一些数据成员、成员函数的参数、以及返回值可以取任意类型。(由于类模板需要一个或多个类型的参数,所以类模板也称为参数化类,类模板可以看成是类的抽象。)

5、什么是const成员函数?它的作用是什么?如何声明和调用const成员函数?

在类中使用const关键字修饰的函数,被称为常成员函数
作用:
确保数据的完整性和一致性:当一个对象的状态不应该被改变时,使用 const 成员函数可以防止意外地修改对象的数据。(例如在函数调用过程中只需要获取对象的某些属性或者进行一些不改变对象状态的计算,)
与 const 对象配合使用:如果一个对象被声明为 const,那么它只能调用 const 成员函数。确保了 const 对象的状态不会被改变。
声明格式:

类型说明 成员函数名(参数表)const;(也就是在一般的函数()后加一个const

在这里插入图片描述

调用方式: 调用常成员函数的方式与普通成员函数相同,可以通过常对象和非常对象来调用。实例对象.const成员函数。
在这里插入图片描述

6、什么是消息?什么是消息映射?

消息的定义:
在 C++ 编程的某些特定场景下(如在图形用户界面(GUI)编程或者事件驱动编程的环境中),消息是对象之间通信的一种方式。它表示一个事件或者请求,从一个对象发送到另一个对象或者一组对象。
消息映射:
消息映射是一种将消息与对应的处理函数关联起来的机制。在面向对象编程,特别是在处理事件驱动的应用程序(如 Windows 下的 MFC 或者 Qt 框架)中广泛使用。

• 例如,在 MFC(Microsoft Foundation Classes)中,消息映射用于将 Windows
系统发送的各种消息(如鼠标移动、键盘按键等消息)和类中的成员函数(消息处理函数)联系起来。当一个消息到达时,系统通过消息映射找到对应的处理函数并执行它。
• 消息映射通常是通过一些宏或者特定的代码结构来实现的。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值