当前位置: 首页 > news >正文

C++编程(三)面向对象

文章目录

  • 一、概念
  • 二、类的定义
    • (一)声明一个类类型的语法格式:
    • (二)类中的访问控制权限
    • (三)实例化对象
      • 1. 栈区对象
      • 2. 堆区对象
    • (四)类内声明类外实现
    • (五)涉及到的多文件编程
    • (六)对比C++类和结构体的区别
  • 三、类中的构造函数
    • (一)概念
    • (二)语法格式
    • (三)构造函数的调用时机
      • 1. 栈区对象
      • 2. 堆区对象
    • (四)构造函数的初始化列表
    • (五)类中包含类 类型成员
  • 四、类中的析构函数
  • 五、类中的拷贝构造函数
  • 六、类中的拷贝赋值函数

一、概念

面向对象的四大特征:
封装、继承、多态、抽象

二、类的定义

(一)声明一个类类型的语法格式:

class 类名{//访问控制权限//类中的成员(成员函数和成员变量)
};
  • 注:
  • 类最后的分号不可丢;
  • 类中的访问控制权限只是起到一个标识作用,不占类的空间
  • 成员函数属于类,但是不占类的空间,没分配内存
  • 如果是一个空类,空类的大小占1个字节;如果类中有成员,那么这1个字节的大小就不算了

(二)类中的访问控制权限

class 类名{public:公有权限既可以在类内进行访问,也可以在类外进行访问在子类中也可以访问private:私有权限私有权限的成员只能在类内进行访问,不能再类外进行访问在子类中也不可以进行访问protected:受保护权限受保护成员只能在类内进行访问,不能再类外进行访问在子类中也可以访问
};
  • 注:
  • 访问控制权限在类中可以有多个,但是一般写一个
  • 如果没有访问控制权限,默认是私有权限(private)
  • 如果类中的私有权限成员和受保护权限成员想要在类外进行访问
    需要通过公有权限成员函数进行操作;
  • 访问控制权限可以写多个,但是使用时一般写一个

(三)实例化对象

1. 栈区对象

类名 对象名;

2. 堆区对象

类名 *对象名 = new 类名;

(四)类内声明类外实现

需要在类外实现时


(五)涉及到的多文件编程

(六)对比C++类和结构体的区别

类的默认权限时私有的,结构体的默认权限是共有的;
如果需要定义一个数据结构,不需要封装,也没有复杂的继承关系,可以使用结构体;

三、类中的构造函数

(一)概念

构造函数是类中一个特殊的成员函数;构造函数会自动调用;

构造函数是用来申请资源,完成对类中的成员变量进行初始化工作;

(二)语法格式

class 类名{类名(){...} //构造函数
};
  • 注:
  • 构造函数的函数名和类名一致
  • 构造函数没有返回值类型

(三)构造函数的调用时机

1. 栈区对象

在实例化对象时进行调用
类名 对象名 = 类名(传递的实参);
类名 对象名(传递的实参);
类名 对象名 = 传递的实参;

  • 注:第三种方式只能传递一个实参

2. 堆区对象

在new对象时进行调用
语法格式:
类名 *对象名 = new 类名(传递实参);

  • 注: 当实例化对象和new对象时,构造函数会自动调用,且仅调用一次,在后面的操作中不能在进行显式地调用。
  • 当没有提供自己写的构造函数,会调用编译器提供的缺省的构造函数,编译器提供的构造函数是无参构造函数;当提供了自己写的构造函数,就会使用自己提供的构造函数
  • 不同版本的构造函数会构成重载关系;
  • 构造函数的参数可以是缺省参数或者哑元参数。

(四)构造函数的初始化列表

在实例化对象的时候,同时给类中的成员变量进行初始化。

类中写有参构造函数时,最好用初始化列表,效率相对高一点

以下场合是必须要使用初始化列表的情况:
类中的成员变量的名称和构造函数的形参一样时,必须使用初始化列表
当成员变量中有引用时,必须在初始化列表中进行初始化工作
当成员变量有const属性时,必须在初始化列表中进行初始化工作

(五)类中包含类 类型成员

构造函数调用顺序:
先调用的是成员对象的构造函数,再调用当前对象的构造函数;

四、类中的析构函数

五、类中的拷贝构造函数

六、类中的拷贝赋值函数

相关文章:

C++编程(三)面向对象

文章目录 一、概念二、类的定义(一)声明一个类类型的语法格式:(二)类中的访问控制权限(三)实例化对象1. 栈区对象2. 堆区对象 (四)类内声明类外实现(五&#…...

Batch入门教程

Batch学习在多个领域有不同的应用,但最常见的是在机器学习和教育学习领域。以下是一个关于Batch学习入门的清晰指南,将分别介绍这两个领域中的Batch学习概念、方法和一些实用信息。 1. 机器学习中的Batch学习 定义与概念 Batch_Size:在机器…...

49-2 内网渗透 - 使用UACME Bypass UAC

靶场准备: 1. 使用已有的 Windows 2012 虚拟机 确保你的虚拟机正在运行,并且可以正常访问。2. 添加 test 用户到管理员组(如上篇文件添加过了就跳过这一步) 具体命令如下: net localgroup administrators test /add 3. 切换用户登录 注销当前会话,并使用 test 用户登录。…...

Django 表单使用示例:数据格式校验

在本文中,我们将使用 Django 的表单(Forms)功能来创建一个添加角色的页面,并对用户提交的数据进行格式校验。 创建 Django 项目和应用 首先,我们创建一个名为 ​​form_demo​​​ 的 Django 项目和一个名为 ​​app01​​ 的应用: django-admin startproject form_de…...

OkHttp框架源码深度剖析【Android热门框架分析第一弹】

OkHttp介绍 OkHttp是当下Android使用最频繁的网络请求框架,由Square公司开源。Google在Android4.4以后开始将源码中的HttpURLConnection底层实现替换为OKHttp,同时现在流行的Retrofit框架底层同样是使用OKHttp的。 源码传送门 优点: 支持Http1、Http…...

【MySQL】数据库——备份与恢复,日志管理1

一、数据备份的重要性 1.备份的主要目的是灾难恢复 在生产环境中,数据的安全性至关重要 任何数据的丢失都可能产生严重的后果造成数据丢失的原因: 程序错误人为,操作错误运算错误磁盘故障灾难(如火灾、地震)和盗窃 2.数据库备份…...

什么样的企业适合SD-WAN网络专线?

SD-WAN(Software-Defined Wide Area Network,软件定义广域网)是一种网络技术,它利用软件定义的方式管理和控制广域网(WAN),旨在提高网络效率、降低成本并简化网络管理。以下是适合采用SD-WAN网络…...

已解决java.security.GeneralSecurityException: 安全性相关的通用异常的正确解决方法,亲测有效!!!

已解决java.security.GeneralSecurityException: 安全性相关的通用异常的正确解决方法,亲测有效!!! 目录 问题分析 报错原因 解决思路 解决方法 确定具体异常类型 检查输入参数 验证算法支持性 调整安全策略 确保资源可…...

秋招Java后端开发冲刺——非关系型数据库篇(Redis)

一、非关系型数据库 1. 主要针对的是键值、文档以及图形类型数据存储。 2. 特点: 特点说明灵活的数据模型支持多种数据模型(文档、键值、列族、图),无需预定义固定的表结构,能够处理各种类型的数据。高扩展性设计为水…...

个人对JVM的一点理解

JVM(Java 虚拟机)是 Java 程序能够跨平台运行的关键。它负责将 Java 字节码转换为机器码并执行。 JVM 主要由类加载器、运行时数据区、执行引擎和本地方法接口等部分组成。运行时数据区包括方法区、堆、虚拟机栈、本地方法栈和程序计数器等。 GC&#xf…...

Flutter【组件】可折叠文本组件

简介 flutter 可折叠文本组件。 点击展开,收起折叠文本。支持样式自定义 github地址: github.com/ThinkerJack… pub地址:https://pub.dev/packages/jac_uikit 展开收起文本 使用方式: ExpandableText(content: 测试 * 50,ma…...

内容安全复习 7 - 对抗攻击与防御

文章目录 概述攻击对抗性攻击的目的攻击的损失函数如何攻击FGSM黑盒与白盒真实世界的攻击 防御被动防御主动防御 概述 动机 (1)不仅要在实验室中部署机器学习分类器,也要在现实世界中部署;实际应用 (2)分类…...

淘宝店铺商家订单API-接入ERP,多平台订单同步的利器

淘宝开放平台给商家们提供了丰富的API,以方便大家扩展业务流程。但是需要调用这些API,商家们要提交资质审核,审核条件也是很严格的。第三方数据公司的存在可以为大家解决这个问题。 custom-自定义API操作 请求参数 请求参数:ap…...

【微前端-Single-SPA、qiankun的基本原理和使用】

背景 在实际项目中,随着日常跌倒导致的必然墒增,项目会越来越冗余不好维护,而且有时候一个项目会使用的其他团队的功能,这种跨团队不好维护和管理等等问题,所以基于解决这些问题,出现了微前端的解决方案。…...

多元化功能空间,打造影像产业生态圈

国际数字影像产业园的多元化功能空间定位涵盖了从产业实训、研发创新、资产交易、集群发展到孵化服务、大数据支持、产学研合作以及人力资源服务等多个方面,旨在为数字影像产业提供全方位的支持和服务,推动产业的升级和发展。 1、产业实训空间&#xff1…...

华为鸿蒙正式杀入工业自动化,反攻开始了!

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 在近日举行的2024华为开发者大会上,华龙讯达与华为共同发布了基于鸿蒙内核技术的“HualongOS 华龙工业操作系统”,这一里…...

学历优先还是专业优先?高考志愿填报的抉择

学历优先还是专业优先?高考志愿填报的抉择 2024年高考帷幕落下,新一轮的思考与选择悄然来临。对于每一位高考考生,选择学校和专业是开启大学新生活的两个前置必选项。然而,有时候“鱼与熊掌不可兼得”,在分数受限的情…...

SpringAOP常用功能实现

1. 导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency> 2. 核心通知 package com.example.aspect;import lombok.SneakyThrows; import org.aspectj.l…...

Java基础的重点知识-04-封装

文章目录 面向对象思想封装 面向对象思想 在计算机程序设计过程中&#xff0c;参照现实中事物&#xff0c;将事物的属性特征、行为特征抽象出来&#xff0c;描述成计算机事件的设计思想。 面向对象思想的三大基本特征: 封装、继承、多态 1.类和对象 类是对象的抽象&#xff…...

win7 的 vmware tools 安装失败

没有安装vmware tools的系统屏幕显示异常。桌面是比较小的图像&#xff0c;四周是黑边在 vmware 软件里 方法1&#xff0c;下补丁 https://www.catalog.update.microsoft.com/Search.aspx?qkb4474419 方法2&#xff0c;使用老版vm tools http://softwareupdate.vmware.com/c…...

Linux系统调用观察与strace实战

Linux系统调用观察与strace实战很多 Linux 问题只靠日志和进程状态很难看清&#xff0c;尤其是在进程存在但无响应、命令卡住不动、文件访问异常或网络连接莫名失败时。此时&#xff0c;观察进程正在进行哪些系统调用&#xff0c;往往能快速揭示它卡在什么地方。中级阶段必须掌…...

蓝桥杯EDA赛题深度解析:从客观题看电子设计核心考点

1. 蓝桥杯EDA赛题概述与备赛策略 蓝桥杯EDA设计与开发科目作为电子设计领域的重要赛事&#xff0c;每年吸引着众多高校学子参与。这个比赛最独特的地方在于它全面考察参赛者的电子设计自动化能力&#xff0c;从基础理论到软件操作&#xff0c;从元器件认知到电路分析&#xff0…...

【Midjourney胶片摄影风格终极指南】:20年影像工程师亲授7种不可外传的参数组合与暗房逻辑复刻法

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;胶片摄影的数字复刻本质与Midjourney底层成像机制 胶片摄影的“颗粒感”“色偏”“晕影”并非缺陷&#xff0c;而是光化学反应在银盐乳剂中非线性响应的物理印记&#xff1b;Midjourney 并不模拟胶片&a…...

Midjourney玩具相机风格从翻车到封神:1个--v 6.1专属参数组合+2个隐藏式胶片颗粒注入指令+1套曝光补偿校准表

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney玩具相机风格的视觉本质与审美悖论 失真即真实&#xff1a;玩具相机的光学哲学 玩具相机&#xff08;Toy Camera&#xff09;风格在 Midjourney 中并非简单模拟 Lomography 或 Holga 的物理…...

Windows Cleaner终极方案:5分钟告别C盘爆红,系统性能飙升200%

Windows Cleaner终极方案&#xff1a;5分钟告别C盘爆红&#xff0c;系统性能飙升200% 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner Windows Cleaner是一款专为W…...

【ElevenLabs卡纳达文语音实战指南】:2024年唯一经生产环境验证的7步本地化部署方案

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs卡纳达文语音技术概览与生产价值定位 ElevenLabs 作为全球领先的文本转语音&#xff08;TTS&#xff09;平台&#xff0c;自2023年Q4起正式支持卡纳达语&#xff08;Kannada&#xff09;&…...

UE5《Electric Dreams》项目PCG技术解析 之 基于PCGSettings的模块化关卡构建

1. PCG技术为何成为UE5开发者的新宠 第一次在UE5.2中接触到PCG框架时&#xff0c;那种感觉就像从手动挡汽车换成了自动驾驶。以前用Houdini做程序化生成时&#xff0c;光是处理插件兼容性和资源导入问题就能耗掉大半天。现在原生集成的PCG框架直接把开发效率提升了至少三倍&…...

MongoDB 4.4+ 版本后,手把手教你搞定mongodump独立安装与配置(附环境变量设置)

MongoDB 4.4独立工具链部署指南&#xff1a;从零构建mongodump备份环境 当你在全新的Linux服务器上部署了MongoDB 4.4或更新版本&#xff0c;准备执行例行数据库备份时&#xff0c;在终端输入熟悉的mongodump命令却只得到command not found的响应——这不是你的操作失误&#…...

Flutter Shimmer最佳实践:10个技巧提升用户体验

Flutter Shimmer最佳实践&#xff1a;10个技巧提升用户体验 【免费下载链接】flutter_shimmer A package provides an easy way to add shimmer effect in Flutter project 项目地址: https://gitcode.com/gh_mirrors/fl/flutter_shimmer Flutter Shimmer是一个功能强大…...

django-stubs模型类型检查实战:告别运行时错误的终极指南

django-stubs模型类型检查实战&#xff1a;告别运行时错误的终极指南 【免费下载链接】django-stubs PEP-484 stubs for Django 项目地址: https://gitcode.com/gh_mirrors/dj/django-stubs 在Django开发中&#xff0c;模型定义是核心环节&#xff0c;但传统开发模式下&…...