C++熟悉篇——类和对象1

ops/2024/12/21 2:07:09/

类和对象1

  • 一、成员函数
  • 二、对象复制
  • 三、私有成员



一、成员函数

工程化编写

我们需要遵从常规的书写规范,把类定义和类实现分别写在头文件和原文件中。

在 Time.h 文件中,内容如下:

#ifndef __MYTIME__
#define __MYTIME__class Time{
public:int Hour;int Minute;int Second;// declare initTime functionvoid initTime(int tmphour,int tmpmin,int tmpsec);
};#endif // MAIN_H

在 Time.cpp文件中,内容如下:

#include <iostream>
#include "Time.h"
using namespace std;
// 两个冒号叫作用域运算符,表示 initTime 函数 属于 Time 类。
void Time :: initTime(int tmphour, int tmpmin, int tmpsec){Hour = tmphour;Minute = tmpmin;Second = tmpsec;
}int main(){Time myTime;myTime.initTime(11,14,5);cout<<myTime.Hour<<endl;cout<<myTime.Minute<<endl;cout<<myTime.Second<<endl;return 0;
}

二、对象复制

Time myTime2 = myTime;
Time myTime3{myTime};
Time myTime4 = {myTime};
myTime4.Hour = 8;Time myTime6;
myTime6 = MyTime4;

上面都是对象的复制,复制后,每个对象都有不同的地址,且成员变量的值都相等。

三、私有成员

在原先的代码增加了一些成员

//Time.h
#ifndef __MYTIME__
#define __MYTIME__class Time{
public:int Hour;int Minute;int Second;// declare initTime functionvoid initTime(int tmphour,int tmpmin,int tmpsec);private:int Millisecond;
private:void initMillTime(int mls);
};#endif // MAIN_H
//Time.cpp
#include <iostream>
#include "Time.h"
using namespace std;
// 两个冒号叫作用域运算符,表示 initTime 函数 属于 Time 类。
void Time :: initTime(int tmphour, int tmpmin, int tmpsec){Hour = tmphour;Minute = tmpmin;Second = tmpsec;
}void Time::initMillTime(int mls){Millisecond = mls;
}int main(){Time myTime;myTime.initTime(11,14,5);//myTime.initMillTime();cout<<myTime.Hour<<endl;cout<<myTime.Minute<<endl;cout<<myTime.Second<<endl;return 0;
}

类的私有成员变量和成员函数,都只能在类的成员函数内调用,外界是无法调用的。

而访问私有变量的方式,后面的友元函数或者友元类来访问会讲到。


http://www.ppmy.cn/ops/143631.html

相关文章

记一MySQL连接速度慢的问题

某一个程序启动速度超级慢&#xff0c;查看日志得知是是在Init DruidDataSource ~ {dataSource-1} inited 这一段耗时最长&#xff0c;这一段是Druid 数据源初始化&#xff0c;进行连接的创建等&#xff0c;使用mysql命令行连接发现连接超级慢&#xff0c;可见是在创建连接的时…

人工智能增强的音频和聊天协作服务

论文标题&#xff1a;AI-enabled Audio and Chat Collaboration Services 中文标题&#xff1a;人工智能增强的音频和聊天协作服务 作者信息&#xff1a; Emil P. Andersen, Norwegian Defence Research Establishment (FFI), Kjeller, NorwayJesper R. Goksr, Sindre E. Ha…

在 Ubuntu 上部署 Terraform 管理平台:实现云基础设施的集中管理

简介 Terraform 是一款开源基础架构自动化工具&#xff0c;可让您通过命令行界面部署和管理数百台服务器。使用 Terraform&#xff0c;你可以通过在一个人类可读的文件中定义配置来构建、更改和管理你的基础架构。它支持许多云提供商&#xff0c;如 AWS、Azure、GCP 和阿里巴巴…

云计算HCIP-OpenStack04

书接上回&#xff1a; 云计算HCIP-OpenStack03-CSDN博客 12.Nova计算管理 Nova作为OpenStack的核心服务&#xff0c;最重要的功能就是提供对于计算资源的管理。 计算资源的管理就包含了已封装的资源和未封装的资源。已封装的资源就包含了虚拟机、容器。未封装的资源就是物理机提…

“TA”说|表数据备份还原:SQLark 百灵连接助力项目部署验收

&#x1f4ac; 南飞雁&#xff5c;应用开发工程师 有些重要项目的部署验收&#xff0c;会在生产环境完成&#xff0c;验收完成后&#xff0c;又需要把这部分数据清空。这时就需要对数据表进行备份和还原&#xff0c;虽然可以通过命令直接实现&#xff0c;但是有一些操作门槛&am…

RPC远程服务调用详解和gRPC简介

RPC (Remote Procedure Call)是远程过程调用&#xff0c;比如说现在有两台服务器A, B&#xff0c;一个在A服务器上的应用想要调用B服务器上的应用提供的某个&#xff0c;由于不在两个方法不在一个内存空间&#xff0c;不能直接调用&#xff0c;需要通过网络表达调用的语义和传达…

力扣第109题:将排序链表转换为二叉搜索树

力扣第109题&#xff1a;将排序链表转换为二叉搜索树 题目描述 给定一个单链表&#xff0c;其中的元素已经按升序排列&#xff0c;要求将其转换为一个高度平衡的二叉搜索树。 高度平衡二叉搜索树&#xff1a;一个二叉搜索树&#xff0c;其中每个节点的左右子树的高度差的绝对…

34.在 Vue 3 中使用 OpenLayers 上传 GeoJSON 文件并显示地图数据

目录 1. 什么是 GeoJSON 文件 GeoJSON 的基本结构 GeoJSON 常见几何类型 2. 为什么选择 OpenLayers 与 GeoJSON OpenLayers 的优势 3. 在 Vue 3 中集成 OpenLayers 安装 OpenLayers 创建 Vue 组件并初始化地图 4. 上传并解析 GeoJSON 文件 5. 样式定制与地图展示 6. …