【C/C++】C++类与对象基本概念(抽象与封装、构造函数、析构函数、静态、友元)

news2024/11/14 0:21:17

文章目录

  • 七、类与对象基本概念
    • 抽象
    • 定义与声明
    • 访问控制
    • 类的实现与使用
    • 对象指针、this指针与对象引用
    • 构造函数
    • 析构函数
    • 拷贝构造函数

七、类与对象基本概念

抽象

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
抽象是相对,而非绝对的
·在研究问题时,侧重点不同,可能会产生不同的抽象结果;解决同一问题时要求不同,也会产生不同的抽象结果。
-如果开发一个人事管理软件,那么关心的是员工的姓名、性别、工龄、工资、工作部门等相关信息。
-如果开发学籍管理软件,那么关心的是学生的姓名、性别、年龄、籍贯、所在学院等相关信息。

定义与声明

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

访问控制

类成员的访问控制

  • 什么是“类内”和“类外”
    在类声明之内称为类内
    在类声明之外称为类外

  • 数据封装的目的就是信息隐蔽。为了达到信息隐蔽,在C++类中,并非所有的成员都是对外可见的(或者说,是类外可以访问的)。

  • 通过设置成员的访问控制属性来实现对类成员的访问控制。这些控制属性有: public、protected、private

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

类的实现与使用

实现一个类,就是按照所设定的功能语义去实现类中的每一个成员函数。

class Clock{
    private:
        int hour,minute,second;
    public:
        void setTime(int h,int m,int s){
            hour = h;
            minute = m;
            second = s;
        }
        void ShowTime(){
            cout<<"Current Time:";
            cout<<hour<<":"<<minute<<":"<<second<<endl;
        }
};

在类内实现成员函数,编译器按内联函数处理。

或者在类外实现成员函数

class Clock{
    private:
        int hour,minute,second;
    public:
        void setTime(int h,int m,int s);
        void ShowTime();
};

void Clock::setTime(int h,int m,int s){
    hour = h;
    minute = m;
    second = s;
}
void Clock::ShowTime(){
    cout<<"Current Time:";
    cout<<hour<<":"<<minute<<":"<<second<<endl;
}

在C++中,类成员函数可以在类定义内部实现,也可以在类定义外部实现。在类内实现成员函数通常是内联函数,而在类外实现需要在类的头文件中声明函数,并在一个源文件中定义这些函数。

在这里插入图片描述
在这里插入图片描述

#include <iostream>
using namespace std;

class Clock{
    private:
        int hour,minute,second;
    public:
        void setTime(int h,int m,int s);
        void addHour(int h);
        void addMinute(int m);
        void addSecond(int s);
        void ShowTime();
};

void Clock::setTime(int h,int m,int s){
    hour = h;
    minute = m;
    second = s;
}
void Clock::addHour(int h){
    hour += h;
}
void Clock::addMinute(int m){
    minute += m;
}
void Clock::addSecond(int s){
    second += s;
}
void Clock::ShowTime(){
    cout<<"Current Time:";
    cout<<hour<<":"<<minute<<":"<<second<<endl;
}

int main()
{
    Clock clock_1,clock_2;
    clock_1.setTime(9,5,25);
    clock_2.setTime(15,16,45);
    clock_1.addHour(3);
    clock_2.addMinute(8);
    clock_1.ShowTime();
    clock_2.ShowTime();
    return 0;
}

注意:每个对象各自包含了类中定义的各个数据成员的存储空间,但它们共享类中定义的成员函数。

总结:定义和使用类类型的过程
·抽象∶对事物进行抽象
·声明类:根据抽象的结果定义类的特性
·实现类:实现类中成员函数的逻辑
·使用类∶在程序中定义类的实例,使用类的公有成员。

在使用的过程中,有需要注意的地方
在这里插入图片描述
在这里插入图片描述
都不行!!!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

对象指针、this指针与对象引用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

构造函数

在这里插入图片描述
在这里插入图片描述
函数名和类名相同,没有返回类型,可以有参数。
当创建类的一个新对象时,构造函数被自动调用,完成对象的初始化工作。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

析构函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

拷贝构造函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

后面章节陆续更新,点赞越多更新越快,欢迎各位的关注~

专栏合集:
【C/C++】C语言程序设计基础知识(数据类型与表达式、控制语句、数组与结构)
【C/C++】C语言程序设计基础知识(指针、函数)
【C/C++】C++程序设计基础(输入输出、数据类型、动态内存、函数重载、内联函数、常量、引用)

声明:仅供学习参考使用,不另做他用,侵删

请添加图片描述

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

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

相关文章

解密低代码:持续更新的必要性与背后驱动力

在数字化转型的浪潮中&#xff0c;低代码&#xff08;Low-Code&#xff09;开发平台已经成为企业快速构建应用程序的重要工具。低代码平台通过图形化界面和少量手写代码&#xff0c;帮助开发者和业务人员在短时间内构建复杂应用。然而&#xff0c;随着技术的不断演进和业务需求…

【C#】Visual Studio代码格式化方法

1. 快捷键 选中内容后&#xff0c;先键入 ctrlk 再键入 ctrlf&#xff08;注意&#xff1a;Visual Studio中标注两个快捷键的都是这样使用&#xff09; 2. 工具栏 编辑 - 高级 - 设置选定内容的格式

mp3格式转换器免费版来袭,告别格式限制,音乐更自由!

当下&#xff0c;mp3格式可以说是音频文件的主流格式。无论是通过耳机、音箱还是车载音响&#xff0c;我们都在使用mp3格式来播放收听音乐。智能手机、平板电脑等移动设备上通常内置mp3播放器。mp3经常在视频剪辑中充当背景音乐和特效音效。 为什么mp3格式如此普遍&#xff1f…

PHP高效易用在线简单商城系统小程序源码

&#x1f680;高效易用的在线简单商城系统&#xff0c;让电商创业轻松启航&#x1f6cd;️ &#x1f308; 一键开店&#xff0c;轻松上手 还在为繁琐的电商开店流程头疼吗&#xff1f;高效易用的在线简单商城系统&#xff0c;让你告别复杂设置&#xff0c;一键开启你的电商之旅…

leetcode日记(73)分隔链表

简单&#xff0c;但是链表问题容易犯错 第一次错误&#xff1a;每次遍历到小于x的节点移动到前面后都需要将a向后移动到移动后的该节点处&#xff0c;使得后面移动的节点都能移动到该节点后 第二次错误&#xff1a;看错了题目&#xff0c;需要从头开始遍历 第三次错误&#…

死抠细节!在ChatGPT的帮助下让论文精益求精!

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 在撰写毕业论文的过程中&#xff0c;细节往往决定成败。无论是结构的合理性、论点的清晰度&#xff0c;还是语言的精准表达&#xff0c;每一个细节都影响着论文的最终质量。今天分享的内…

解决世界500强跨域跨境数据文件传输丢包严重、高延迟等问题

在当今全球化的商业环境中&#xff0c;大型跨国公司如世界500强企业&#xff0c;面临着跨地域数据传输的挑战。这些挑战包括数据包丢失、网络延迟、成本上升以及数据安全风险。传统的数据传输方法已难以满足这些企业对效率和安全性的需求。那么&#xff0c;如何为这些企业找到一…

虚拟机安装+xftp+xshell

1、VMware安装 下载VM&#xff0c;可以直接去官网下载&#xff0c;也可以直接提取我的网盘链接 通过百度网盘分享的文件&#xff1a;vmware 链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;ms01 --来自百度网盘超级会员V2的分享 没有百度网盘会员的这里也有123…

vue3+vite项目中引入path模块报错

报错描述&#xff1a;Module "path" vite-browser-exter...h?t1700468860286:3 has been externalized for browser compatibility. Cannot access "path.resolve" in client code. 问题原因&#xff1a;vite 源码中设定了不允许在客户端代码中访问内置模…

STL中queue、stack的实现与容器适配器的讲解

目录 简介 栈&#xff08;Stack&#xff09; 队列&#xff08;Queue&#xff09; 实现 栈的实现 队列的实现 deque的讲解 deque的结构示意图 简介 栈&#xff08;Stack&#xff09;和队列&#xff08;Queue&#xff09;是两种基本的数据结构&#xff0c;在STL&#xff0…

【面积图表美化示例+讲解】

文章目录 效果预览&#xff1a;半透面积图&#xff1a;百分比堆积图&#xff1a; 效果预览&#xff1a; 半透面积图&#xff1a; 思路&#xff1a; 实际上是由两种类型的图表叠在一起&#xff0c;【面积图折线图】 处理&#xff1a; [1] 为了让面积图的边缘更加清晰&#xff…

ts发送邮箱,以网易邮箱来演示

①引入依赖&#xff1a; npm i nestjs-modules/mailer nodemailer 这里是引入相应的需要的依赖。 创建模块&#xff0c;以及服务 nest generate module sendEmail nest generate service sendEmail ②在app.module中注册&#xff0c;之后在其它的模块就可以使用 import { M…

员工飞单、走私单、离职带走客户,屡禁不止怎么办?1招防止!

企业面临着诸多挑战&#xff0c;其中员工行为不端&#xff0c;如飞单、走私单以及离职时带走客户等问题&#xff0c;不仅损害了企业的经济利益&#xff0c;更侵蚀了企业的市场竞争力与客户信任度。 这些问题如同一颗颗毒瘤&#xff0c;若不及时清除&#xff0c;将严重阻碍企业…

简而不减,极致便捷!泰极预付费解决方案震撼上市

开户麻烦!绑表复杂!用电情况模糊!电费收缴难! 在日常生活中,能源缴费可能经常会遇到运维难管理、缴费收益难计算、支付安全难保障等问题。如何解决呢?正泰物联推出“泰极预付费解决方案”,“简”操作,“不减”功能,有效解决上述问题,助力实现便捷生活。 享轻松:泰极简而不减…

three.js 编辑器,动画,着色器, cesium 热力图,聚合点位,大量点线面, 图层,主题,文字

对于大多数的开发者来言&#xff0c;看了很多文档可能遇见不到什么有用的&#xff0c;就算有用从文档上看&#xff0c;把代码复制到自己的本地大多数也是不能用的&#xff0c;非常浪费时间和学习成本&#xff0c; 尤其是three.js &#xff0c; cesium.js 这种难度较高&#xff…

【计算机组成原理】五、中央处理器:3.指令流水线(互斥、同步)

5.指令流水线 文章目录 5.指令流水线5.1基本概念5.2性能指标5.3指令流水线影响因素5.3.1结构相关&#xff08;**资源冲突**&#xff09;&#xff1a;**互斥**5.3.2数据相关&#xff08;**数据冲突**&#xff09;&#xff1a;**同步**5.3.3控制相关&#xff08;**控制冲突**) 5.…

电脑网络设置

有时候开机会发现电脑明明练了Wifi却无法上网&#xff0c;是因为之前梯子没关直接关机&#xff0c;解决方案是 打开设置网络和Internet代理手动设置代理关闭“使用代理服务器”

黑马JavaWeb开发笔记10(前端完结)——Vue路由介绍入门、前端工程打包、nginx前端部署

文章目录 前言一、Vue路由1. 介绍2. 路由入门 二、打包部署1. 前端工程打包2. 部署前端工程2.1 nginx介绍2.2 部署 总结 前言 本篇文章是2023年最新黑马JavaWeb开发笔记10&#xff1a;Vue路由介绍&入门、前端工程打包、nginx前端部署的总结&#xff0c;帮助需要学习Web开发…

6款文件恢复软件推荐,电脑小白也能够一人做到电脑数据恢复!

在一台小小的电脑里&#xff0c;有着我们学习资料的整理、工作文件的痕迹和生活点滴的回忆&#xff0c;正因为这些数据对我们来说是十分珍重的东西&#xff0c;所以会难以承受它们丢失不见的结果。 一旦造成数据丢失&#xff0c;我们该怎么做才能把这些重要的数据文件找回呢&a…

科研绘图之折线图

在科研数据分析中&#xff0c;折线图是一种常见且有效的可视化工具&#xff0c;用于展示数据随时间或其他连续变量的变化趋势。Python&#xff0c;作为一种强大的编程语言&#xff0c;提供了多种绘制折线图的工具和库&#xff0c;其中最常用的包括 Matplotlib 和 Seaborn。 Ma…