【零基础学习C++】如何写一个C++类?

news2025/3/1 1:08:04

在这里插入图片描述

个人主页:【😊个人主页】
系列专栏:【❤️系列专栏:零基础学习C++】


文章目录

  • 前言
  • 什么是类?🤔
  • 类的三大特性👣
  • 定义一个类💻
  • 类的实例化🔬


前言

类是对现实生活中一类具有共同特征的事物的抽象

类的内部封装了属性和方法,用于操作自身的成员。类是对某种对象的定义,具有行为(behavior),它描述一个对象能够做什么以及做的方法(method),它们是可以对这个对象进行操作的程序和过程。它包含有关对象行为方式的信息,包括它的名称、属性、方法和事件。


什么是类?🤔

类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。

类的实质是一种引用数据类型,类似于 byte、short、int(char)、long、float、double 等基本数据类型,不同的是它是一种复杂的数据类型。因为它的本质是数据类型,而不是数据,所以不存在于内存中,不能被直接操作,只有被实例化为对象时,才会变得可操作。

类的构成包括成员属性和成员方法(数据成员和成员函数)。数据成员对应类的属性,类的数据成员也是一种数据类型,并不需要分配内存。成员函数则用于操作类的各项属性,是一个类具有的特有的操作

类的三大特性👣

  1. 封装性将数据和操作封装为一个有机的整体,由于类中私有成员都是隐藏的,只向外部提供有限的接口,所以能够保证内部的高内聚性和与外部的低耦合性。用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员,能够增强安全性和简化编程。
  2. 继承性更符合认知规律,使程序更易于理解,同时节省不必要的重复代码。
  3. 多态性是指同一操作作用于不同对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向父类(基类)的指针,来调用实现子类(派生类)中的方法。

在这里插入图片描述

定义一个类💻

class 类名 {
    public: 公有成员
    private: 私有成员
    protected: 保护成员
};
  • 公有成员、私有成员、保护成员均包含数据成员和成员函数两部分,彼此没有顺序之分。一个 public / private / protected 关键字下可以跟多个成员,直到下一个 public / private / protected 关键字。如果成员前面没有 public / private / protected 关键字,默认为私有成员。
  • 结尾部分的分号必不可少,否则会发生语法错误。
  • 无论公有成员、私有成员还是保护成员,彼此之间都可以访问。比如公有的成员函数可以操作保护的数据成员,也可以调用私有的成员函数。
  • 类的数据成员是类型,所以不能被赋值,声明数据成员和声明普通变量的格式相同,比如 “ int n; ”
  • 成员函数的实现
    成员函数可以在类内实现,也可以在类外实现。内部实现的成员函数被默认为加上了 inline;外部实现的成员函数必须加上域操作符,即 “ 类名 :: 成员函数 ”。

类的实例化🔬

声明一个类类型的对象,就是类的实例化,会涉及到必要的内存分配。

类名 对象名(参数列表);
如果没有参数,括号必须省略,即 “ 类名 对象名;”,自动调用构造函数。特殊地,参数可以是类的对象,此时会自动调用拷贝构造函数。

在这里插入图片描述

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

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

相关文章

第五章.­ ­ Training Versus Testing

第五章. Training Versus Testing 上一章主要介绍机器学习的可行性。由NFL定理可知,机器学习貌似是不可行的,但是随后引入了统计学知识,如果样本数量足够大,且hypothesis数量有限,那么机器学习一般是可行的&#xff0…

哪款是你值得拥有地图可视化开发平台

地图可视化在当今的数据分析和决策制定等领域中发挥着越来越重要的作用,越来越多的企业和个人开始关注和使用这一技术。而地图可视化开发平台作为地图可视化的重要工具和平台,其选择合适的产品对于产品效果和开发效率都具有非常重要的意义。在选择地图可…

Spring Boot中的SimpMessagingTemplate是什么,原理,以及如何使用

Spring Boot中的SimpMessagingTemplate是什么,原理,以及如何使用 SimpMessagingTemplate是Spring Framework中的一个类,用于向WebSocket客户端发送消息。在Spring Boot应用程序中,可以使用SimpMessagingTemplate来实现WebSocket通…

【GPT】中文大语言模型梳理与测评(C-Eval 、AGIEval、MMLU、SuperCLUE)

文章目录 概述申请后直接使用大模型开源可本地部署 通识数据集测评(C-Eval 、AGIEval、MMLU、SuperCLUE)自媒体报道SuperCLUE:中文通用大模型综合性基准C-Eval:中英测评(清华上交提出)当前排名(…

Object counting——生成密度图density map

文章目录 过程代码参考 过程 首先构造一个和原始图片大小相同的矩阵,并将其全部置为0,然后将每个被标记的人头对应的位置置为1,这样就得到了一个只有0和1的矩阵,最后通过高斯核函数进行卷积得到一个连续的密度图。 代码 import…

如何对修改密码接口进行压测?终于找到解决办法了

做接口测试中,对于一般性的单业务接口测试很多工具可供选择,但是对于一些相关业务相关性的关联接口测试就比较麻烦,使用工具比如jmeter、postman、soapui等等就比较麻烦。我比较偏重脚本化执行测试用例,所以选择了groovy作为主要语…

JAVA选择题笔试:static成员与非static成员、父类子类方法的继承、接口与抽象类、final的使用

0、前言 本文针对一些java基础知识的一些考点做出解析。 1、静态成员 与 非静态成员 静态变量与静态方法都是静态成员。 先说静态变量与普通成员变量的区别,例如如下两个变量: public class Demo {public static String A "静态变量";publi…

迅镭激光高功率切割机成功交付招商重工,助推船舶行业智造升级!

近日,迅镭激光-招商重工高功率激光切割机交机仪式在招商局重工(江苏)有限公司顺利举行。 招商重工项目负责人佘刚林、孙宗宇,迅镭激光总经理助理刘富生、营销中心行业总监杨林等领导参加交付仪式,共同见证了这一激动人心的时刻。 本次交付的机…

日历组件 el-calendar 实现标记功能

需求:在日历组件中选择月份时,可以显示当月已经质检或需质检的数据 思路:前端每次点击日期选择器的时候调用接口,接口返回当月需要质检或已质检的数据,前端拿到数据就开始做判断然后回显。 大体样式 代码&#xff1a…

【每日一短语】给某人严重的惊吓

1、短语及释义 scare the pants off sb. 释义: 把某人的裤子吓掉;引申为严重的惊吓 2、示例及出处 美剧:《生活大爆炸》第八季第2集 The Big Bang Theory, Season 8 Episode 2 Leonard Hofstadter: I think the idea that someone could be …

【操作指南】EasyNTS上云网关如何删除日志?

EasyNTS上云网关主要包括两个部分:第一部分是软硬结合的EasyNTS上云网关设备。EasyNTS上云网关有单独的软件部分,具有拉转推功能,用户可集成部署在自己的硬件终端和业务系统中,也有软硬一体的硬件部分,根据需求直接配置…

CSS中伪元素详解和用法例子详解

文章目录 一、伪元素介绍二、::before和::after三、::first-line和::first-letter四、::selection五、::placeholder 一、伪元素介绍 伪元素:用于创建一些不在DOM树中的元素,并为其添加样式。 二、::before和::after ::before 伪元素可以用来创建一个…

浅谈 Android Tombstone(墓碑日志)分析步骤 - 02

tomestone 日志: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** Build fingerprint: qti/trinket/trinket:11/RKQ1.211119.001/37:user/test-keys Revision: 0 ABI: arm Timestamp: 2023-06-19 23:47:310800 pid: 742, tid: 32482, name: CAM_M…

Spring Bean的生命周期解读

目录 1. Spring IOC容器 1.1 Spring IOC 容器的设计 1.1.1 BeanFactory 1.1.2 ApplicationContext 1.2 Spring Bean的生命周期 1.2.1 BeanDefinition 1.2.2 InstantiationAwareBeanPostProcessor和BeanPostProcessor 1.2.3 测试生命周期 1. Spring IOC容器 1.1 Spring …

【前端工程化】深入浅出vite(一)--vite的优点及原理、性能优化

Vite 需要 Node.js 版本 14.18,16。然而,有些模板需要依赖更高的 Node 版本才能正常运行,当你的包管理器发出警告时,请注意升级你的 Node 版本。 背景 webpack支持多种模块化,将不同模块的依赖关系构建成依赖图来进行…

帮助中心对企业有用吗?

帮助中心一般是指产品的说明或者使用帮助,客户在利用一些网站的功能或者服务时往往会遇到一些看似很简单,但不经过说明可能很难搞清楚的问题,企业有时甚至会因为这些细节问题的影响而失去用户,其实在很多情况下,只要经…

如何添加mathtype到往word菜单?

mathtype6.9安装完事,总是不在word中显示菜单,网上搜了好几个教程,步骤各不相同,索性自己试了一遍,整理了下关键步骤,做个备份,下次直接看自己的经验! 把math type安装目录中&#…

MySQL中常用工具

♥️作者:小刘在C站 ♥️个人主页: 小刘主页 ♥️努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏&#xf…

LeetCode 15.三数之和

文章目录 题目描述解题思路代码 题目描述 链接&#xff1a;https://leetcode.cn/problems/3sum 解题思路 排序 双指针 注意点&#xff1a;去重 代码 public IList<IList<int>> ThreeSum(int[] nums) {// 结果数组List<IList<int>> result new Li…

Nacos 2.x版本 配置中心和服务注册与发现 源码解析

一、配置中心源码解析 1.首先找到nacos读取配置的入口 1&#xff09;找到nacos-config包下的spring.factories中的NacosConfigBootstrapConfiguration 2&#xff09;NacosConfigBootstrapConfiguration会做两件事情&#xff0c;加载完成两个bean&#xff0c;一个是NacosConfi…