详解c++:认识类
文章目录
- 前言
- 一、类是什么
- 二、类(class)的使用
- public
- private:
- protected:
前言
C++ 是一种面向对象的编程语言。面向对象编程是一种编程范式,它使用“对象”来设计软件应用程序。在面向对象编程中,对象包含了数据和操作这些数据的函数(在C++中称为成员函数)。这些对象是基于类(class)创建的,类定义了对象的结构、属性和行为。其中类是一个非常重要的内容也是c++入门的一大难点下面我将详细的说明什么是类
提示:以下是本篇文章正文内容,下面案例可供参考
一、类是什么
在百度百科中是这么定义类的:类(英语:class)在面向对象编程中是一种面向对象计算机编程语言的构造,是创建对象的蓝图,描述了所创建的对象共同的属性和方法。
类的更严格的定义是由某种特定的元数据所组成的内聚的包。它描述了一些对象的行为规则,而这些对象就被称为该类的实例。类有接口和结构。接口描述了如何通过方法与类及其实例互操作,而结构描述了一个实例中数据如何划分为多个属性。类是与某个层的对象的最具体的类型。类还可以有运行时表示形式(元对象),它为操作与类相关的元数据提供了运行时支持。
支持类的编程语言在支持与类相关的各种特性方面都多多少少有一些微妙的差异。大多数都支持不同形式的类继承。许多语言还支持提供封装性的特性,比如访问修饰符。类的出现,为面向对象编程的三个最重要的特性(封装性、继承性、多态性),提供了实现的手段。
那么我们该怎么用呢?
二、类(class)的使用
在cpp中类有个关键字:class
所以我们学习类先要学习class的使用,在这里我先提供一个基本模板
class MyClass {
public: // 公有成员,可以在类外部访问 void publicFunction() { // ... } protected: // 受保护成员,在类外部不可直接访问,但可以在派生类中访问 void protectedFunction() { // ... } private: // 私有成员,只能在类内部访问 void privateFunction() { // ... }
};
在这个模板中我们可以看到class中有一个关键字叫 public
public
pubilc是将下面的元素全部开放(类中元素是默认封装的)但是你如果要访问的话需要加类域不然无法访问(就像是无法直接用cout一样)只有在表示类域的情况下才能使用
当你使用pubilc时你已经将全部内容展开了那么我们不行将它展开时要怎样做呢?这就用到了我们下面两了关键字protected和private
private:
private是一个很安全的封装,它只能被定义该成员的类内部访问,无法被外界和子类访问所以它可以隐藏类的内部实现细节,保护数据不被外部非法访问或修改,增强类的封装性。
protected:
protected是一个相对来说受保护的对象它能被类访问同时也能被类的子类所访问,它的灵活性比较高但是相对的也完成了封装(域外无法直接访问)同时在使用继承时,如果基类的成员被protected修饰,则这些成员在子类中变为protected,即子类可以访问这些成员。
相关文章:
详解c++:认识类
文章目录 前言一、类是什么二、类(class)的使用publicprivate:protected: 前言 C 是一种面向对象的编程语言。面向对象编程是一种编程范式,它使用“对象”来设计软件应用程序。在面向对象编程中,对象包含了…...
HTML5中的重要元素详解
第3章 HTML5中的重要元素 3.1 html根元素 HTML文档中,元素html代表了文档的根,其他所有元素都是在该元素的基础上进行延伸或拓展的,该元素也是HTML文档的最外层元素,因此也称为根元素。 html元素的常用属性: manif…...
八股文知识汇总(常考)
八股文知识汇总(常考) 语言特性相关 JAVA知识 - JDK动态代理为什么只能代理有接口的类? 说一下对象创建的过程?ThreadLocal是什么?他的实现原理是什么?ThreadLocal会出现内存泄露吗?String、…...
unity 图片置灰shader
我和chatgpt真强! 在 Unity 编辑器中,右键点击 Assets 文件夹,选择 Create -> Shader -> Unlit Shader。shader代码如下,尽管我看的不是很懂,但确实有用 Shader "Custom/GrayScaleShader" {Properti…...
【C语言】(指针系列2)指针运算+指针与数组的关系+二级指针+指针数组+《剑指offer面试题》
前言:开始之前先感谢一位大佬,清风~徐~来-CSDN博客,由于是时间久远,博主指针的系列忘的差不多了,所以有些部分借鉴了该播主的,有些地方如果解释的不到位,请翻看这位大佬的,感谢大家&…...
探索信号处理:使用傅里叶小波变换分析和恢复信号
在现代信号处理领域,傅里叶变换是分析和处理信号的一种基本工具。然而,传统的傅里叶变换在处理非平稳信号时存在局限性,因为它无法同时提供时间和频率的信息。为了克服这一挑战,傅里叶小波变换(FSWT)应运而…...
俄罗斯方块——C语言实践(Dev-Cpp)
目录 1、创建项目(尽量不使用中文路径) 2、项目复制 3、项目配置 1、调整编译器 2、在配置窗口选择参数标签 3、添加头文件路径和库文件路径 4、代码实现 4.1、main.c 4.2、draw.h 4.3、draw.c 4.4、shape.h 4.5、shape.c 4.6、board.h 4.7、board.c 4.8、cont…...
关于wp网站出现的问题
问题1 问题1:如果出现这个界面的问题 说明是根目录的index.php编码出了问题,用备份的源文件退换一下即可。 问题2 问题2:如果出现页面错位现象,可能是某个WP插件引起的问题,这里需要逐步排查插件,或者你刚…...
为什么H.266未能普及?EasyCVR视频编码技术如何填补市场空白
H.266,也被称为Versatile Video Coding(VVC),是近年来由MPEG(Moving Picture Experts Group)和ITU(International Telecommunication Union)联合开发并发布的新一代国际视频编码标准…...
最全 高质量 大模型 -评估基准数据集(不定期更新)
评估基准是推动人工智能领域技术进步和应用落地的关键工具,通过这些基准,我们可以更全面地理解LLMs的能力,并指导未来的研究和实践。 评估基准,是一套衡量标准,就像老师用考试来检查学生学得怎么样。在大模型的世界里…...
react 中, navigate 跳转链接 2种写法
react 中, navigate 下面2种写法, 有什么区别, import { useNavigate } from "react-router-dom"; const navigate useNavigate(""); onClick{() > navigate("/signup")}import { Navigate } from "react-route…...
k8s Service 服务
文章目录 一、为什么需要 Service二、Kubernetes 中的服务发现与负载均衡 -- Service三、用例解读1、Service 语法2、创建和查看 Service 四、Headless Service五、集群内访问 Service六、向集群外暴露 Service七、操作示例1、获取集群状态信息2、创建 Service、Deployment3、创…...
安全建设当中的冷门知识
今天说点有趣的话题,也是因为在安全建设过程中,安全员也不太可能都按照最理想的状态去工作,有资源的问题,有管理惰性问题,当然也有管理者本身决策的问题。 安全行业起步较晚,16年才施行网络安全法ÿ…...
python画图|极坐标下的3D surface
前述学习过程中,我们已经掌握了3D surface的基本绘制技巧,详见链接: python画图|3D surface基础教程-CSDN博客 基础教程中的3D surface绘制位于笛卡尔坐标系,但有时候会用到极坐标绘图。虽然我们已经学过简单的极坐标绘图技巧&a…...
html+css+js网页设计 旅游 大理旅游7个页面
htmlcssjs网页设计 旅游 大理旅游7个页面 网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1&#…...
Day 29~42 JavaWeb
Java Web 1、基本概念 1.1、前言 web开发: web,网页的意思,www.baidu.com静态web html,css 提供给所有人看的数据始终不会发生变化动态web 淘宝,几乎是所有的网站 提供给所有人看的数据始终会发生变…...
小程序开发设计-第一个小程序:创建小程序项目④
上一篇文章导航: 小程序开发设计-第一个小程序:安装开发者工具③-CSDN博客https://blog.csdn.net/qq_60872637/article/details/142219152?spm1001.2014.3001.5501 须知:注:不同版本选项有所不同,并无大碍。 一、创…...
C++设计模式——Mediator中介者模式
一,中介者模式的定义 中介者模式是一种行为型设计模式。它通过一个中介者对象将多个对象之间的交互关系进行封装,使得对象之间的交互需要通过中介者对象来完成。该设计模式的结构很容易理解,以中介者为中心。 中介者模式的设计思想侧重于在…...
微服务之间远程调用实现思路
项目使用的Spring Cloud Alibaba框架,微服务之间远程调用使用OpenFeign,具体实现步骤如下: (1)在api工程定义OpenFeign接口,使用FeignClient注解进行定义。 (2)服务提供方定义Open…...
获取STM32 MCU的唯一ID
STM32每个系列都会有唯一的一个芯片序列号(96位bit) STM32F10X 的起始地址是 0x1FFFF7E8 STM32F20X 的起始地址是 0x1FFF7A10 STM32F30X 的起始地址是 0x1FFFF7AC STM32F40X 的起始地址是 0x1FFF7A10 STM32L0XX 的起始地址是 0x1FF80050 STM32L1XX 的起…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
Axure 下拉框联动
实现选省、选完省之后选对应省份下的市区...
32单片机——基本定时器
STM32F103有众多的定时器,其中包括2个基本定时器(TIM6和TIM7)、4个通用定时器(TIM2~TIM5)、2个高级控制定时器(TIM1和TIM8),这些定时器彼此完全独立,不共享任何资源 1、定…...
书籍“之“字形打印矩阵(8)0609
题目 给定一个矩阵matrix,按照"之"字形的方式打印这个矩阵,例如: 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为:1,…...
