C++ 入门篇之类 对象的关系

news2024/11/27 22:37:43

   📒博客主页:  ​​开心档博客主页​​

     🎉欢迎关注🔎点赞👍收藏⭐留言📝

     📌本文由开心档原创!

     📆51CTO首发时间:🌴2022年12月12日🌴

    ✉️这世界很喧嚣,做自己就好!

    🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

⭐本文介绍⭐

C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,通常被称为用户定义的类型。

类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。

C++ 类定义

定义一个类,本质上是定义一个数据类型的蓝图。这实际上并没有定义任何数据,但它定义了类的名称意味着什么,也就是说,它定义了类的对象包括了什么,以及可以在这个对象上执行哪些操作。

类定义是以关键字 class 开头,后跟类的名称。类的主体是包含在一对花括号中。类定义后必须跟着一个分号或一个声明列表。例如,我们使用关键字 class 定义 Box 数据类型,如下所示:

class Box
{
   public:
      double length;   // 盒子的长度
      double breadth;  // 盒子的宽度
      double height;   // 盒子的高度
};

关键字 public 确定了类成员的访问属性。在类对象作用域内,公共成员在类的外部是可访问的。您也可以指定类的成员为 private 或 protected,这个我们稍后会进行讲解。

定义 C++ 对象

类提供了对象的蓝图,所以基本上,对象是根据类来创建的。声明类的对象,就像声明基本类型的变量一样。下面的语句声明了类 Box 的两个对象:

Box Box1;          // 声明 Box1,类型为 Box
Box Box2;          // 声明 Box2,类型为 Box

对象 Box1 和 Box2 都有它们各自的数据成员。

访问数据成员

类的对象的公共数据成员可以使用直接成员访问运算符 . 来访问。

为了更好地理解这些概念,让我们尝试一下下面的实例:

实例

#include <iostream>
 
using namespace std;
 
class Box
{
   public:
      double length;   // 长度
      double breadth;  // 宽度
      double height;   // 高度
      // 成员函数声明
      double get(void);
      void set( double len, double bre, double hei );
};
// 成员函数定义
double Box::get(void)
{
    return length * breadth * height;
}
 
void Box::set( double len, double bre, double hei)
{
    length = len;
    breadth = bre;
    height = hei;
}
int main( )
{
   Box Box1;        // 声明 Box1,类型为 Box
   Box Box2;        // 声明 Box2,类型为 Box
   Box Box3;        // 声明 Box3,类型为 Box
   double volume = 0.0;     // 用于存储体积
 
   // box 1 详述
   Box1.height = 5.0; 
   Box1.length = 6.0; 
   Box1.breadth = 7.0;
 
   // box 2 详述
   Box2.height = 10.0;
   Box2.length = 12.0;
   Box2.breadth = 13.0;
 
   // box 1 的体积
   volume = Box1.height * Box1.length * Box1.breadth;
   cout << "Box1 的体积:" << volume <<endl;
 
   // box 2 的体积
   volume = Box2.height * Box2.length * Box2.breadth;
   cout << "Box2 的体积:" << volume <<endl;
 
 
   // box 3 详述
   Box3.set(16.0, 8.0, 12.0); 
   volume = Box3.get(); 
   cout << "Box3 的体积:" << volume <<endl;
   return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

Box1 的体积:210
Box2 的体积:1560
Box3 的体积:1536

需要注意的是,私有的成员和受保护的成员不能使用直接成员访问运算符 (.) 来直接访问。我们将在后续的教程中学习如何访问私有成员和受保护的成员。

类 & 对象详解 {#detail}

到目前为止,我们已经对 C++ 的类和对象有了基本的了解。下面的列表中还列出了其他一些 C++ 类和对象相关的概念,可以点击相应的链接进行学习。

概念

描述

​​类成员函数​​

类的成员函数是指那些把定义和原型写在类定义内部的函数,就像类定义中的其他变量一样。

​​类访问修饰符​​

类成员可以被定义为 public、private 或 protected。默认情况下是定义为 private。

​​构造函数 & 析构函数​​

类的构造函数是一种特殊的函数,在创建一个新的对象时调用。类的析构函数也是一种特殊的函数,在删除所创建的对象时调用。

​​C++ 拷贝构造函数​​

拷贝构造函数,是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。

​​C++ 友元函数​​

友元函数可以访问类的 private 和 protected 成员。

​​C++ 内联函数​​

通过内联函数,编译器试图在调用函数的地方扩展函数体中的代码。

​​C++ 中的 this 指针​​

每个对象都有一个特殊的指针 this,它指向对象本身。

​​C++ 中指向类的指针​​

指向类的指针方式如同指向结构的指针。实际上,类可以看成是一个带有函数的结构。

​​C++ 类的静态成员​​

类的数据成员和函数成员都可以被声明为静态的。


🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!


 

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

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

相关文章

docker(3):镜像分层原理

目录UnionFS&#xff08;联合文件系统&#xff09;docker镜像加载原理分层理解commit镜像docker中&#xff0c;镜像是一种轻量级、可执行的独立软件包&#xff0c;用来打包软件运行环境和基于运行环境开发的软件&#xff0c;它包含运行某个软件所需的所有内容、包括代码、运行时…

【计算机网络】HTTP首部详解

HTTP首部详解HTTP 协议的请求和响应报文中必定包含 HTTP 首部。首部内容为客户端和服务端分别处理请求和响应提供所需要的信息。对于客户端用户来说&#xff0c;这些信息中的大部分内容都无需亲自查看。 1.HTTP请求报文 2.HTTP响应报文 3.首部字段类型 3.1 通用首部字段 首部…

在线CAD-梦想云图Node.JS服务

说明 后台提供梦想Node.JS服务&#xff0c;方便调用控件后台功能&#xff0c;Bin/MxDrawServer的安装目录中有Linux和Windows两个文件夹&#xff0c;用户可以根据自己的操作系统下载对应的程序。 启动服务 Windows:进入Bin\MxDrawServer\Windows目录&#xff0c;运行start.ba…

大数据毕业设计 新闻分类算法实现

文章目录1 简介1.1 本文章博主将介绍:2 参与及比较算法3 先说结论4 实现过程4.1 数据爬取4.2 数据预处理5 CNN文本分类6 最后1 简介 &#x1f525; Hi&#xff0c;大家好&#xff0c;这里是丹成学长的毕设系列文章&#xff01; &#x1f525; 对毕设有任何疑问都可以问学长哦…

JUC并发编程详解

JUC并发编程详解一、Callable接口二、ReentrantLock类三、原子类四、线程池五、信号量Semaphore六、闭锁CountDownLatch七、线程安全的集合类7.1 多线程环境使用 ArrayList7.2 多线程环境使用队列7.3 多线程环境使用哈希表JUC > java.util.concurrent&#xff0c;这个包里放…

【AI with ML】第 1 章 :TensorFlow 简介

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

python使用bs模块爬取小说数据

目录 一、BS模块介绍 二、分析页面架构 三、代码实现 四、结果展示 五、总结思路 一、BS模块介绍 Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱&#xff0c;通过解析文档为用户提供需要抓取的数据…

【云计算与大数据技术】Hadoop MapReduce的讲解(图文解释,超详细必看)

一、Hadoop MapReduce架构 MapReduce 是一种分布式计算框架,能够处理大量数据 ,并提供容错 、可靠等功能 , 运行部署在大规模计算集群中&#xff0c;MapReduce计算框架采用主从架构&#xff0c;由 Client、JobTracker、TaskTracker组成 Client的作用 用户编写 MapReduce程序…

Debye-Wolf积分计算器

摘要 众所周知&#xff0c;Debye-Wolf积分可用于以半解析方式计算焦平面附近的矢量场。Debye-Wolf积分通常用作分析高数值孔径显微镜成像情况的基本工具。它是基于理想模型&#xff0c;因此不需要待求镜头精确规格的知识。该用例将解释如何在VirtualLab Fusion中使用Debye-Wolf…

Guitar Pro8更新了多达30项功能优化

很多人在听到Guitar Pro这个名词时&#xff0c;本能反应就是跟吉他有关的软件吧&#xff0c;但是具体是什么样子&#xff0c;有什么功能我们却不一定知道的那么详细&#xff0c;下面呢&#xff0c;我们就来详细的介绍下Guitar Pro这款软件。 Guitar Pro是初学作曲&#xff0c;特…

openlayers百万级和千万级数据量的矢量切片在渲染过程中的技术难点解析

目录1 前言2 数据介绍3 切片方案及技术难点3.1 大数据量图层矢量切片无法正确返回结果3.2 矢量切片标注过程中标注拥挤3.3 矢量切片每一块切片都进行了标注&#xff0c;形成了冗余3.4 矢量切片标注的随机性会造成时而在中央&#xff0c;时而在边界上3.5 特殊样式的制作3.6 图层…

Jmeter(九):jmeter_逻辑控制器_事务控制器HTTP Cookie管理器

Jmeter(19)&#xff1a;jmeter_逻辑控制器_事务控制器 事务&#xff1a; 性能测试中&#xff0c;事务指的是从端到端&#xff0c;一个完整的操作过程&#xff0c;比如一次登录、一次 筛选条件查询&#xff0c;一次支付等&#xff1b;技术上讲&#xff1a;事务就是由1个或多个…

C# Spire.Xls将DataTable导出到Excel并加密

背景需求&#xff1a; 页面展示信息列表&#xff0c;需要将数据导出到Excel并加密sheet文件和工作簿结构。 代码思路&#xff1a;1.将数据转换为dataTable&#xff0c;2.将dataTable导出到Excel&#xff0c;3.处理加密。 文章目录引入必要的dll文件1.将数据转换为DataTable2.将…

Python英文词频统计(哈姆雷特)程序示例

今天继续给大家介绍Python相关知识&#xff0c;本文主要内容是Python英文词频统计程序示例&#xff0c;主要是对英文文本——《哈姆雷特》进行分词。 一、英文文本词频统计思路 想要对《哈姆雷特》进行英文单词词频统计&#xff0c;那么我们首先需要拿到《哈姆雷特》的原文&a…

“笨鸟”逆风飞:一场荣耀的高端越峰征程

2020年的11月17日&#xff0c;荣耀被迫“成年”。 “那一天都是在忙碌过程中度过的&#xff0c;有很多人要去沟通&#xff0c;有很多资产的分割……”&#xff0c;在12月12日央视网财经的访谈节目《云顶对话》中&#xff0c;荣耀CEO赵明首次向外袒露心迹&#xff0c;转身成为对…

C++11标准模板(STL)- 算法(std::max)

定义于头文件 <algorithm> 算法库提供大量用途的函数&#xff08;例如查找、排序、计数、操作&#xff09;&#xff0c;它们在元素范围上操作。注意范围定义为 [first, last) &#xff0c;其中 last 指代要查询或修改的最后元素的后一个元素。 返回各给定值中的较大者 …

构建供销一体化电商交易体系,数商云S2B2B系统实现锂电池企业全面转型升级

近年来&#xff0c;得益于新能源汽车和储能产业的快速发展&#xff0c;相关支撑技术和产业也得到空前关注&#xff0c;锂电池就是其中一员。我国动力电池装机量达到92GWH&#xff0c;同比增长169%&#xff0c;超过全球平均增速&#xff0c;占据着全球近一半的电池装机量。 新能…

Qt 蓝牙库基础

1.目的 使用QT自带的蓝牙功能库进行学习开发&#xff0c;了解蓝牙设备的工作原理和使用流程&#xff0c;目的搭建可以自由控制的蓝牙app&#xff0c;为以后的学习生活做基础。 2.本地设备 采用自己vivo Y53的手机作为实验对象。 使用到的QT蓝牙库的类名&#xff1a; QBlue…

PIC 16F18系列单片机开发 IO口配置与stm32的区别

目录 前言 PIC单片机配置字 电路需要IO口来发挥作用 寄存器和特殊功能寄存器 I/O口 I/O口和单片机内部寄存器之间的对应关系 前言 由于在之前学习嵌入式IDE时候都是直接接触到的是STM32 ARM内核的32位看偏激&#xff0c;现在开发使用的是美国微芯公司推出的PIC系列的单片…

【云原生】kubeadm部署k8s集群

内容预知 架构说明 1.环境准备 2.所有节点安装docker 3. 所有节点安装kubeadm&#xff0c;kubelet和kubectl 4. 部署 Dashboard 5. 安装 部署与k8s集群对接的Harbor仓库 内核参数优化方案 架构说明 前面的文章中&#xff0c;我们采用了二进制包搭建出的k8s集群&#xff…