c++类与对象
🐶博主主页:@ᰔᩚ. 一怀明月ꦿ
❤️🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章
🔥座右铭:“不要等到什么都没有了,才下定决心去做”
🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀
目录
🐰类与对象
🌸类和对象的关系:
🌸类的声明和对象的定义
🏡类的声明:
🏡对象的定义
🐰类的成员函数
🐰对象成员的访问
🐰类与对象
对象:对象就是封装了数据及在这些数据之上的操作的封装体,这个封装体有一个名字标识它,而且向外界提供一组操作类:类是对具有相同属性和操作的一组对象的抽象描述🌸类和对象的关系:
每一个实体都是对象。有一些对象是具有相同的结构和特性的。每个对象都属于一个特定的类型。在C++中对象的类型称为类(class )。类代表了某一批对象的共性和特征。类是对象的抽象,而对象是类的具体实例(instance)。正如同结构体类型和结构体变量的关系一样,人们先声明一个结构体类型,然后用它去定义结构体变量。同一个结构体类型可以定义出多个不同的结构体变量。在C然后++中也是先声明一个类类型,用它去定义若干个同类型的对象。对象就是类类型的一个变量。可以说类是对象的模板,是用来定义对象的一种抽象类型。类是抽象的,不占用内存,而对象是具体的,占用存储空间。
🌸类的声明和对象的定义
🏡类的声明:
类声明的一般形式: class 类名 { public:公用成员... protected:受保护成员... private:私有成员... };在声明类的一般形式中,class 是声明类的关键字,后面跟着类名。大括号里是类的成员的声明,包括数据成员和成员函数。大括号后面要有分号。成员的可访问性分为3类:公用的(public)受保护的(protected)私有的(private)其中关键宇 public protected 和 private 称为成员访问限定符,后面加上冒号。访问限定符限定它后面的成员的访问属性,直到出现下一个访问限定符或者类声明结束。访问属性为公用的成员既可以被本类的成员函数访问,也可以在类的作用域内被其他函数访问。访问属性为受保护的成员可以被本类区及其派生类的成员函数访问,但不能被类外访问。访问属性为私有的成员只能被本类成员函数访问而不能被类外访问(类的友元例外)在声明类时,这3种访问属性的成员的声明次序是任意的,并且在一个类的声明中这3种访问属性不一定全部都出现,可能只出现两种或一种。某个成员访问限定符在一个类的声明中也可以出现多次。无论出现几次,成员的访问属性都是从一个成员访问限定符出现开始,到另一个成员访问限定符或类声明为止。如果在类声明的开始处没有写出成员访问限定符,则默认的成员访问属性是私有的。(尽量保证每一种成员访问限定符在类的声明中只出现一次)关于3种成员访问限定符出现的顺序问题,从语法上说无论谁在前谁在后效果都是完全一样的。🏡对象的定义
C++使用类来定义对象大体有三种方法:第一种:先声明类类型,然后再定义对象class student { public:公用成员... protected:受保护成员... private:私有成员... }; student stud1, stud2; //定义了两个student类的对象stud1和stud2在C++中,在声明了类类型后,定义对象有两种形式。(1) class 类名 对象名class student stud1, stud2;(2) 类名 对象名student stud1, stud2; (1)和(2)这两种形式完全等效,但是(1)形式更加简洁,使用最多第二种: 在声明类类型的同时定义对象(在定义class类的时候,在定义类的末尾,定义类对象)class student { public:公用成员... protected:受保护成员... private:私有成员... }; stud1, stud2; //定义了两个student类的对象stud1和stud2第三种:不出现类名,直接定义对象(在定义类的时候,在class关键字后面,没有定义类名)class { public:公用成员... protected:受保护成员... private:私有成员... }; stud1, stud2; //定义了两个类的对象stud1和stud2第二种和第三种对象定义的方法不常用
特别注意:声明类时系统并不会分配内存空间,而定义对象时系统会给每个对象分配内存空间
🐰类的成员函数
返回值类型 类名::成员函数名(参数表){函数体}它与普通函数区别于:成员函数是属于某个类的,是类的一个成员。可以指定函数的访问权限(公有,私有,受保护)。在类外调用成员函数要注意它的访问属性,公有的成员函数才可以被类外任意的调用,私有的成员函数在类外是看不到的。成员函数可以访问本类的任何成员,不管它的访问属性,可以访问本类的数据成员,也可以调用本类的其他成员函数。成员函数的第一种定义方式:在类声明中只给出成员函数的原型,而将成员函数的定义放在类的外部。#include<iostream> using namespace std; class Point{public:void Info();void Add();private:int x,y; }; void Point::Info() //在类外定义成员函数setpoint {cin>>x>>y; } void Point::Add() {cout<<x+y<<endl; } int main() {Point s;s.Info();s.Add();retuen 0; }成员函数的第二种定义方式:将成员函数直接定义在类的内部#include<iostream> using namespace std; class Point{public:void Info(){cin>>x>>y;}void Add(){cout<<x+y<<endl;}private:int x,y; }; int main() {Point s;s.Info();s.Add();return 0; }注意:(1) 成员函数在类内定义或是在类外定义,对程序执行的效果基本一样。只是对于较长的成员函数放在类外更有利于程序的阅读。(2)在类外定义成员函数时,必须首先在类内写出成员函数的原型声明,然后再在类外定义,这就要求类的声明必须在成员函数定义之前(3)如果在类外有函数定义,但是在函数名前没有类名和作用域运算符进行限定,则该函数被认为是普通函数(4) 如果成员函数的函数体很短,如只有两三行,也可以将其定义在类内在类中的成员函数是在类内定义时,C++系统会默认该成员函数是inline成员函数,此时不必在函数定义前面加inline,如果加上也是可以的。如果成员函数定义在类外,类内只有成员函数的声明,则在成员函数的声明或成员函数定义前必须要有inline,成员函数定义前和成员函数声明前只要有一处有inline即可。
🐰对象成员的访问
(1)通过对象名和成员操作符进行访问对象名.成员名s.Info();(2)通过指向对象的指针进行访问
#include<iostream> using namespace std; class Point{public:void Info(){cin>>x>>y;}void Add(){cout<<x+y<<endl;}private:int x,y; }; int main() {Point s;Point* ps=&s;ps->Info();ps->Add();return 0; }(3)通过对象的引用进行访问#include<iostream> using namespace std; class Point{public:void Info(){cin>>x>>y;}void Add(){cout<<x+y<<endl;}private:int x,y; }; int main() {Point s;Point &ps=s;ps.Info();ps.Add();return 0; }
🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸
相关文章:
c++类与对象
🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章 🔥座右铭:“不要等到什么都没有了,才下定决心去做” …...
Java并发编程与API详解
文章目录前言操作系统——进程和线程进程进程组成进程状态进程控制进程创建进程终止进程阻塞和唤醒进程通信线程线程组成线程状态线程控制线程的实现方式用户线程内核线程混合方式CPU调度调度的层次调度的实现调度器调度的时机、切换与过程进程调度的方式闲逛进程两种线程的调度…...
【冲刺蓝桥杯的最后30天】day5
大家好😃,我是想要慢慢变得优秀的向阳🌞同学👨💻,断更了整整一年,又开始恢复CSDN更新,从今天开始更新备战蓝桥30天系列,一共30天,如果对你有帮助或者正在备…...
大厂与小厂招人的区别,看完多少有点不敢相信
前两天在头条发了一条招人的感慨,关于大厂招人和小公司招人的区别。 大厂:有影响力,有钱,能够吸引了大量的应聘者。因此,也就有了筛选的资格,比如必须985名校毕业,必须35岁以下,不能…...
前端ES5对象特性
ES5对象特性 对象和函数的原型 JS中每一个对象都有一个特殊的内置属性,这个特殊的对象可以指向其他的对象 我们通过引用对象的属性key来获取一个value时,它会触发 Get 的操作首先检查该对象是否有对应的属性,如果有的话就使用对象内的如果…...
Linux入门介绍及Linux文件与目录结构
前言 本文小新为大家带来 Linux 入门介绍及Linux 文件与目录结构 相关知识,具体内容包括Linux入门介绍(包括:Linux概述,Linux与Windows区别,CentOS 下载地址),Linux文件与目录结构等进行详尽介绍…...
超赞,用python实现流媒体服务器功能,寥寥几句搞定。
步骤: 要使用Python将实时摄像机传送流写入H5页面,可以使用以下步骤。 1、安装必要的软件包。您需要安装OpenCV和Flask以及gunicorn 与 gevent 。您可以通过在终端中运行以下命令来执行此操作。 pip install opencv-python pip install Flask pip ins…...
冥想第七百二十一天
1.3.3周五,又是周五了。今天又运动了5公里,很舒服轻松。 2.还是往常的生活,休息的也很好,开春后跑的一直很好。 3.早上30分钟健康操。中午转了圈, 给大哥说下周去上海。 4.感谢父母,感谢朋友,感…...
06-Oracle表空间与用户管理
本讲主要内容: 1.表空间管理:表空间的作用,创建,修改,删除及管理; 2.用户管理:创建用户,修改用户,删除用户,修改密码,解锁; 3.用户…...
Mysql 索引特点
承接上文Mysql Server原理简介聚簇索引、二级索引、联合索引分别具备什么样的特点?聚簇索引数据跟索引放在一起的叫聚簇索引;数据和索引分开存储的叫非聚簇索引;innodb存储引擎,数据和文件都放在ibd文件中,实际的数据是…...
读书笔记-终身学习
前言人需要终身成长,也需要终身学习,以下是记录个人读书学习的笔记总结,希望能给大家一点借鉴,仅供参考。笔记1、《匠人精神》秋山利辉是日本神奈川县横滨市都筑区“秋山木工”的经营者,从事订制家具制作业务。是一家小…...
了解栈Stack一篇文章就够了
什么是栈栈是一种特殊的线性表,只允许一端进行数据的插入和删除,即先进后出原则。类似于弹夹先装进去的子弹后面出,后放入的子弹先出。栈的底层原理栈是一种线性结构,所以既能使用数组实现,也能使用链表实现࿰…...
CNStack 助推龙源电力扛起“双碳”大旗
作者:CNStack 容器平台、龙源电力:张悦超 、党旗 龙源电力容器云项目背景 龙源电力集团是世界第一大风电运营商, 随着国家西部大开发战略推进,龙源电力已经把风力发电场铺设到全国各地,甚至是交通极不便利的偏远地区&…...
ruoyi-vue-plus1(控制台相关的输出日志)(p6spy插件)(jackson全局配置)(StopWatch)
Jackson配置在启动项目时,我们发现日志打印出这样几行字,初始化了jacdson配置,我们去查看一下来源找。我们找到了一个全局序列化配置类,其中重写了BigNumberSerializer.INSTANCE进去查看发现了这里对于部分范围的数字进行了转为为…...
【Mybatis】| 如何创建MyBatis的工具类
目录🌟更多专栏请点击👇一、前言二、实现过程1. 创建一个ThreadLocal对象2. 初始化SqlSessionFactory3. 获取并存储sqlSession对象4. 关闭sqlSession对象三、 总代码🌟更多专栏请点击👇 专栏名字🔥Elasticsearch专栏e…...
【Java】DT怎么写?
几个重要的注解 怎么用mockito写单元测试? package Biz;import Client.FileIOClient; import Req.FileRequest; import Res.FileResponse; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks;…...
xcode14安装swift package设置github账户token
这里写目录标题登录github账户,复制token打开xcode添加github账户选择swift package登录github账户,复制token 登录github点击上面菜单自己的头像,settings->Developer settings->Personal access tokens->Tokens (classic)->Generate new token (classic) Note名…...
css面试题1
一、css 1. 说一下css的盒模型 在HTML中所有元素都可以看成是一个盒子 盒子的组成: 内容content、内边距padding、边框border、外边距margin 盒模型的类型: 标准盒模型 margin border padding content IE盒模型 margin content(border padding) 控制…...
Hive基础
hive基本语法:查看数据库:hive (default)> show databases; -----查看所有数据库hive (default)> desc database test; ----查看数据库结构hive (default)> select current_database(); ---查看当前数据库创建数据库:hive (default)…...
信息收集-
url: https://en.wikipedia.org:443/wiki/hypertext_Transfer_Protocol?id123#HTTP/1.1_response_messages https:协议 en.wikipedia.org:域名 443:端口 wiki/hypertext_Transfer_Protocol:文件路径 id123&…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
