C++复习第二天:类与对象

news/2024/7/7 20:08:04

1. 什么是面向过程?什么是面向对象?

C语言是面向过程的,关注的是过程,分析出解题过程的步骤,调用函数来实现。

C++是基于面向对象的,关注的是对象,将一件事物划分成不同的对象,通过不同对象之间相互交互完成

2. 面向对象的三大特性

面向对象的三大特性分别是:封装、继承、多态

2.1 封装

什么是封装?

隐藏了对象的实现细节和属性,仅对外公开接口来和对象进行交互,封装其实是一种对于类的管理,可以让用户更加方便的管理类。

3. 八大默认成员函数

  1. 构造函数
  2. 析构函数
  3. 拷贝构造函数
  4. 赋值重载函数
  5. &重载函数
  6. ->重载函数
  7. 移动构造函数
  8. 移动赋值函数

其中第7、8成员函数是在C++11中引入了右值引用后新添加的默认成员函数

注意:

1. 构造函数为什么不能是虚函数?

因为派生类在生成对象时会自动调用基类的构造函数,如果基类的构造函数是虚函数,则不会调用基类的构造函数,那么无法生成基类对象。

2. 析构函数可以是虚函数吗?

析构函数可以是虚函数,由于编译器会将基类和派生类的析构函数最后都转换成destructer,因此如果基类的析构函数是虚函数,则派生类会完成覆盖。

3. 什么情况下会默认生成默认构造函数? 什么情况下会默认生成移动构造函数?

当我们没有显示的写构造函数时,会默认生成构造函数。

当我们没有显示的写构造函数,拷贝构造函数和赋值重载函数时,会默认生成移动构造函数。

4. 默认函数的初始化列表

对于需要初始化的变量,比如引用类型,可以完成真正意义上的初始化。

初始化列表上的初始化顺序和写的顺序无法,与类中定义的顺序有关。

4. 对象实例化

类其实就类似是一个图纸没有占用任何的空间,而对象的创建就是我们所说的实例化。

4.1 对象的大小

这里就要关注一个对象中存储了什么?

类中只存储了成员变量,成员函数都存储在代码段中。

因此对于对象大小的计算就类似于对于结构体大小的计算,涉及到了对齐问题。

那么如果一个类定义时没有任何的成员变量,那么创建一个对象的大小是多少?

如果按上述说法来计算,其大小应该是0,但编译器为了标识它是存在过的,因此给予空类对象一个字节的大小。

5. this指针

5.1 什么是this指针

对于一个类生成的不同对象,调用其共有的函数,那么是如何区分其函数传入变量不同的呢?

C++引入了this指针来区分,C++给非静态的成员函数都引入了this指针的概念,当该指针指向对象时,所有对成员变量的操作都是通过该指针来访问。

5.2 this指针的特性

  1. this指针是常指针。
  2. this指针只能在成员函数内部使用
  3. 因为需要频繁调用,this指针一般存储在寄存器中

6. 运算符重载

什么运算符是不能够被重载的呢?

1. 带.的运算符是不能被重载的 1 .* 2 :: 3 ?:  4 

2. sizeof运算符是不能被重载的

运算符重载的意义是什么?

为了提高代码的可读性,

7. static关键字

  1. 被static关键字修饰的成员变量是所有对象公用的
  2. 静态成员变量必须在类外进行定义,类中的成员都是声明
  3. 类的静态成员可以通过类名::成员名来进行访问或者对象.静态成员
  4. 静态成员中没有this指针

8. 友元

友元是单向的,是不可传递的。


http://lihuaxi.xjx100.cn/news/101266.html

相关文章

【车间调度】基于全球邻域和爬坡来优化模糊柔性作业车间调度问题(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑…

python数学建模--线性规划问题案例及求解

目录数学问题:线性规划问题程序设计结果分析实际应用1:加工厂的生产计划设置未知数建立数学模型程序设计结果分析实际应用2:油料加工厂的采购和加工计划设置未知数建立数学模型程序设计结果分析遗留的问题钢管加工用料问题分析scipy.optimize…

全网最全学习攻略【尚硅谷电影推荐系统】附视频代码链接

简述 因为设计任务是开发一款图书推荐系统,但是没有现成的系统开发讲解,于是从网上找到了尚硅谷电影推荐系统的开发教程。 从配置虚拟机到开发各种推荐功能共耗时一个月左右,小破站里的视频教程很多但是有的是武老师少录了,有的是…

拓端tecdat|R语言实现 Copula 算法建模相依性案例分析报告

原文链接:http://tecdat.cn/?p6193 原文出处:拓端数据部落公众号 copula是将多变量分布函数与其边缘分布函数耦合的函数,通常称为边缘。Copula是建模和模拟相关随机变量的绝佳工具。Copula的主要吸引力在于,通过使用它们&#x…

计算机网络——4.1

作业4.1 题量: 38 满分: 138 作答时间:10-18 16:51至10-24 23:55 智能分析 127分 一. 单选题(共26题,78分) 1. (单选题, 3分)下列IP地址中作为环回地址用于本地软件环回测试的是() A. 128.0.0.0B. 192.0.0.0C. 12…

StringBoot 入门初始

目录1、简介1.1、什么是StringBoot ?1.2、为什么使用springboot2、构建一个 SpringBoot 项目(helloWorld)2.1、项目创建2.1.1 页面创建2.1.2 IDEA创建2.2、启动项目并访问2.2.1 创建一个HelloController.java2.2.2 启动项目2.3、自定义banner图3、Spring Boot启动器…

CIBERSORT 最全介绍 官网

最全面的免疫浸润分析使用教程,虽晚必到 ——免疫浸润分析里不得不提的神器CIBERSORt CIBERSORTx CIBERSORT初探input输入 output 代码详解 原理解析免疫浸润 反卷积_YoungLeelight的博客-CSDN博客 https://blog.csdn.net/qq_52813185/article/details/127469758?…

【PyTorch深度学习项目实战100例】—— 基于LSTM + 注意力机制(self-attention)进行天气变化的时间序列预测 | 第35例

前言 大家好,我是阿光。 本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmPy…