期末速成C++【类和对象】

news2025/2/28 0:03:07

目录

1.面向对象的编程思想

2.面向对象的三大特征

3.封装 

4.类的定义

5.成员函数

6.对象的创建和使用

7.字符串string的使用

8.this指针

9.构造函数VS析构函数 

9.1🎇构造函数

9.1.1无参构造函数&有参构造函数​

9.1.2构造函数的初始化表

9.1.3重载构造函数

9.1.4含有成员对象的类的构造函数

9.2析构函数​

9.3拷贝构造函数

10.🎇关键字修饰类的成员

10.1const常成员(变量/函数)

10.2static静态成员 (变量/函数)


1.面向对象的编程思想

  • 面向过程编程:瀑布开发模型、理想化的模型。面向过程程序设计就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个一次调用即可。

  • Object-Oriented面向对象思想:数据封装。面向对象程序设计描述的时客观世界中的事物,以对象代表一个具体的事物,把数据和数据的操作方法放在一起而形成的一个相互依存又不可分割的整体。

2.面向对象的三大特征

  • 封装、继承、多态
  • 三大特征具有承上启下的关系,而且适用于所有面向对象的编程语言。
  • 在面向对象的程序设计过程中,数据和处理数据的函数封装在一个模块(类)中,不存在跨模块处理数据的问题! 

3.封装 

  • C++的封装是通过类类型(简称类)实现的,通过类把具体事物抽象成一个由属性(成员变量)和行为(成员函数)组成的独立单位(即类)。
  • 在类的封装设计中,通过访问权限控制类成员的访问:
  1. private
  2. protected
  3. public

4.类的定义

  •  类是事物的抽象描述,若想定义类就需要抽象出事物的属性及方法。

 注意:这段代码中,字符指针name的相关操作是存在问题的。Const char*

5.成员函数

  • 成员函数的函数体既可以写在类中,也可以写在类外实现。!通常使用类外实现。

  • 构造函数和析构函数

  • 针对成员变量的Set/Get、Add/Del函数

  • 其他功能性函数

【成员函数的简单分类】-经验之谈

【举例】

6.对象的创建和使用

对象在栈中创建:

  • 类名 对象名 = 初始值;

  • 类名 对象名(初始值列表);(初始值列表构造函数)

  • 例如:Student s;(s是变量也是对象)

  • 对象的公有成员(成员变量和成员函数)的访问:

  • 对象名.成员变量

  • 对象名.成员函数(实参列表)

  • .成员访问运算符

对象在堆中创建:

  • 类名.指针=new 类型;

  • delete 指针;

  • 例如:Student* ps = new Student;Delete ps;

  • 对象的公有成员(成员变量和成员函数)的访问:

  • 指针->成员变量

  • 指针->成员函数列表

  • ->称为成员访问运算符

7.字符串string的使用​​​​​​

8.this指针

  • 类的指针常量,即Student* const this,不能赋值

  • 隐含的this指针,不能在形参和实参中显示写

  • 可以在成员函数内部可以使用

  • 编译器会自动给类的所有成员函数的形参中都添加一个默认的this指针。❌静态成员函数static

#include<iostream>
using namespace std;
class Date
{
public:
	void Init(int year, int month, int day)
	{
		_year = year;
		_month = month;
		_day = day;
	}
	//void Print(Date* const this)
	void Print()//❌不能显示写
	{
		cout <<this->_year<<this->_month << "-" << this->_day << endl;
		cout << this << endl;
	}
private:
	int _year; 
	int _month; 
	int _day; 
};
int main()
{
	Date d1, d2;
	d1.Init(2022, 1, 11);
	d2.Init(2022, 1, 12);
	//d1.Print(&d1)
	d1.Print();//❌不能显示写
	d2.Print();
	return 0;
}

9.构造函数VS析构函数 

  • 构造函数用于对象的创建和初始化(分配内存、初始化工作)
  • 析构函数用于对象的释放(回收内存、清理工作) 

9.1🎇构造函数

类名::构造函数名(和类名一样)(参数列表):(成员变量)(初始化参数),(成员变量)(初始化参数)
{
   //成员变量赋值
   //
}

//存在成员对象
类名::构造函数名(和类名一样)(参数列表):(成员对象)(参数,参数,参数),(成员变量)(初始化参数)

{

   //成员变量赋值
   //
}

9.1.1无参构造函数&有参构造函数

9.1.2构造函数的初始化表

  • 在实现构造函数时,可以在函数体中给成员变量赋值。
  • 同时也可以通过运算符在构造函数后面初始化成员变量,这种方式称为列表初始化。
  • 常变量、引用、成员对象必须使用初始化列表! 

注:建议尽量使用初始化表。某些情况下,必须使用初始化表进行初始化 常变量、引用必须初始化,所以常成员变量、引用类型的成员变量,只能通过初始化表进行初始化!成员对象也需要通过初始化表初始化。

类名::构造函数名(和类名一样)(参数列表):(成员变量)(初始化参数),(成员变量)(初始化参数)
{
   //成员变量赋值
   //
}

9.1.3重载构造函数

9.1.4含有成员对象的类的构造函数

  • 成员对象的初始化也必须在初始化表中完成!
  • 创建含有成员对象的对象时,先执行成员对象的构造函数,再执行类的构造函数。
  • B类含有的成员变量是a对象(A类类型)的构造函数

  • 成员对象:C++允许将一个对象作为另一个类的成员变量,即类中的成员变量可以时其他类的对象,这样的成员变量称为类的子对象或成员对象。

class B
{
    A a; //对象a作为类B的成员变量
    //其他成员
}

9.2析构函数

9.3拷贝构造函数

  • 使用再同一个作用域内,使用一个对象初始化另外一个对象

  • 对象作为实参传递给形参

  • 函数调用中的拷贝构造函数(实参到形参)

  • 函数参数为引用类型,因为实参就是形参,所以不会调用拷贝构造函数。

10.🎇关键字修饰类的成员

10.1const常成员(变量/函数)

  • 常对象只能调用常成员函数
  • 常成员函数不能够直接或者间接的修改任何成员变量
  • 成员函数=功能性函数+构造函数+析构函数 

10.2static静态成员 (变量/函数)

  • 一个类的静态成员变量乐意被该类的所有对象所“共享”

  • 可以通过类名直接调用静态成员变量和函数,所以可以把全局函数转换成某个的静态成员函数。

  • 三角形和点类
  • 复数类
  • 单例模式
  • 指针类型的成员变量以及正确处理❌
  • 深拷贝&浅拷贝❌
  • 友元函数
  • 内联函数inline
  • auto自动类型识别

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2261154.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

牛客周赛 Round 72 <字符串>

<1>小红的01串&#xff08;一&#xff09; #include<stdio.h> #include<string.h> char ch[100]; int main() {scanf("%s",ch);int count0;int lenstrlen(ch);for(int i0;i<len-1;i){if(ch[i]!ch[i1]){count;} }printf("%d",count);…

2024.12.14 TCP/IP 网络模型有哪几层?

2024.12.14 TCP/IP 网络模型有哪几层? 2024.12.14 今天周六 看到大伙都在考六级&#xff0c;我来复盘小林coding的计算机网络的知识点&#xff1a; TCP/IP 网络模型有哪几层? 问大家&#xff0c;为什么要有 TCP/IP 网络模型? 对于同一台设备上的进程间通信&#xff0c;有…

将 Ubuntu 22.04 LTS 升级到 24.04 LTS

Ubuntu 24.04 LTS 将支持 Ubuntu 桌面、Ubuntu 服务器和 Ubuntu Core 5 年&#xff0c;直到 2029 年 4 月。 本文将介绍如何将当前 Ubuntu 22.04 系统升级到最新 Ubuntu 24.04 LTS版本。 备份个人数据 以防万一&#xff0c;把系统中的重要数据自己备份一下~ 安装配置SSH访问…

商业化大前端在性能优化领域的探索与实践

导读&#xff1a;在业务飞速发展的过程中&#xff0c;用户体验是必不可少的一个环节&#xff0c;而页面性能是直接影响用户体验的重要因素。当页面加载时间过长、交互操作不流畅时&#xff0c;意味着业务可能会出现转化率降低、用户流失等业务问题。在过去一年&#xff0c;为了…

Envoy 进阶指南(下):深入探究Envoy服务和架构

接上篇&#xff1a;《Envoy 进阶指南&#xff08;上&#xff09;&#xff1a;从入门到核心功能全掌握》 链接 文章目录 3.深入探究Envoy3.1 Envoy服务发现机制3.1.1文件订阅3.1.2 gRPC 流式订阅3.1.3 REST-JSON 轮询订阅 3.2监听器&#xff08;Listener&#xff09;3.3.架构3.3…

将PDF流使用 canvas 绘制展示在页面上(一)

将PDF流展示在页面上 使用 pdfjs-dist 库来渲染 PDF 页面到 canvas 上进行绘制展示 安装 pdfjs-dist 依赖 npm install pdfjs-dist 或者 yarn add pdfjs-dist创建一个组件来处理 PDF 流的加载和渲染 该组件中是一个包含 PDF 文件的 Base64。 将 pdf 流传入该组件中使用 /** fo…

PCIE概述

PCIE概述 文章目录 PCIE概述前言一、应用场景二、PCIE理论2.1 硬件2.2 拓扑结构&#xff1a;处理器和设备之间的关系2.3 速率2.4 层次接口2.5 四种请求类型2.5.1 bar空间2.5.2 memory2.5.3 IO2.5.4 configuration2.5.5 message 前言 参考链接&#xff1a; pcie总线知识点解析 …

序列模型的使用示例

序列模型的使用示例 1 RNN原理1.1 序列模型的输入输出1.2 循环神经网络&#xff08;RNN&#xff09;1.3 RNN的公式表示2 数据的尺寸 3 PyTorch中查看RNN的参数4 PyTorch中实现RNN&#xff08;1&#xff09;RNN实例化&#xff08;2&#xff09;forward函数&#xff08;3&#xf…

Elasticsearch8.17.0在mac上的安装

1、下载并安装 下载8.17版本es(目前最新版本)&#xff1a;Download Elasticsearch | Elastic 也可以通过历史版本列表页下载&#xff1a;Past Releases of Elastic Stack Software | Elastic 当然也可以指定具体版本号进行下载&#xff1a;Elasticsearch 8.17.0 | Elastic …

【自动控制原理】学习地图

分值分布 选择+填空+判断:50分 大题:50分 概念 控制系统的数学模型 在控制系统的分析和设计中,首先要建立系统的数学模型。控制系统的数学模型是描述系统内部物理量(或变量)之间关系的数学表达式。 在静态条件下(即变量各阶导数为零),描述变量之间关系的代数方程叫静态…

Synchronous Serial Port 协议详解

1、简介 Synchronous Serial Port (SSP) &#xff0c;基于下图文档的设计标准 1.1、包含3种数据帧格式&#xff1a; a Motorola SPI-compatible interface&#xff08;以下简称SPI&#xff09;a Texas Instruments synchronous serial interface&#xff08;简写SSI&#xff…

前端OpenAPI根据后端Swagger自动生成前端接口报错

测试之后发现是因为Map<Long,List<CommentVO>>的返回值类型的锅&#xff0c;改成Page<List<CommentVO>>即可解决。 前端使用的umiMAX的openapi&#xff0c;报错如下&#xff1a; originalRef: BaseResponseboolean\n "401&q…

在线预约陪诊小程序

一、前言 随着社会老龄化加剧以及人们健康意识的提高&#xff0c;就医过程中的陪伴需求日益增长。许多患者在面对复杂的医院环境、繁琐的就医流程时&#xff0c;需要有人协助挂号、候诊、取药等&#xff0c;而家属可能因工作繁忙无法全程陪同。同时&#xff0c;异地就医的患者更…

信号滤波分析-低通分析(Matlab)

Matlab低通滤波 信号滤波分析-低通分析&#xff08;Matlab&#xff09; 【标价是仅源码的价格】 【有课程设计答辩PPT和设计文档报告】 需要或感兴趣可以随时联系博主哦&#xff0c;常在线秒回&#xff01; 低通滤波分析方案的设计包括&#xff1a; 1.信号生成原理 2.低通滤波…

全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之复合运算符

&#xff08;一&#xff09;、复合运算符 在C中&#xff0c;可以通过“赋值语句”来修改变量的值。赋值语句的格式&#xff1a; 变量名 值或者表达式&#xff1b;其中""称为"赋值运算符"。 除此之外&#xff0c;在赋值运算符当中&#xff0c;C有复合赋…

半导体器件与物理篇5 1~4章课后习题

热平衡时的能带和载流子浓度 例 一硅晶掺入每立方厘米10^{16}个砷原子&#xff0c;求室温下(300K)的载流子浓度与费米能级。 需要用到的公式包括1.本征载流子浓度公式 2.从导带底算起的本征费米能级 2.从本征费米能级算起的费米能级 载流子输运现象 例1:计算在300K下&#x…

Qt-Advanced-Docking-System配置及使用、心得

Qt-Advanced-Docking-System 1. Qt-Advanced-Docking-System描述2. 功能特点2.1. 灵活的停靠方式2.2. 嵌套停靠2.3. 自定义布局保存与恢复2.4. 外观和行为定制 3. 与Qt原生停靠系统的比较4. 使用场景4.1. 集成开发环境&#xff08;IDE&#xff09;4.2. 图形设计软件4.3. 数据分…

Vue中纯前端实现导出简单Excel表格的功能

Vue 前端Excel导出 Vue中纯前端导出简单Excel表格的方法(使用vue-json-excel插件) 前言 在许多的后台系统中少不了导出Excel表格的功能&#xff0c;在项目中纯前端使用vue-json-excel插件来实现简单Excel表格的导出功能。 使用方法 1、安装依赖 npm install vue-json-exc…

【系统分析师】-收官整理-已考过

1、考试历程 之前从未参加过软考 2023年11月系统架构师【未通过】 2024年05月系统架构师【已通过】 2024年11月系统分析师【已通过】 鉴于架构师与分析师在基础知识上比较相似&#xff0c;在看到架构考试通过后&#xff0c;就准备往系分方面。 2、考题分析 今年下半年系分考试…

暂停window11自动更新

window11 的自动更新功能&#xff0c;一方面在后台占用资源&#xff0c;容易导致电脑卡顿&#xff1b;另一方面&#xff0c;“更新并关机” 和 “更新并重启” 的设置令人极其反感。很多补丁兼容性很差&#xff0c;更新后极易引发电脑蓝屏、闪屏等意想不到的 bug。 1.winR打开运…