【C/C++】详解 类和对象的概念、基本用法

news2024/11/15 8:45:39

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
🔥c++系列专栏:C/C++零基础到精通 🔥

给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

在这里插入图片描述

c语言内容💖:

专栏:c语言之路重点知识整合

【c语言】全部知识点总结


目录

  • 一、类和对象的概念
  • 二、定义和使用类
  • 三、类成员访问修饰符

一、类和对象的概念

在【C语言和C++的区别】中提到过:

C++ 是一门面向对象编程的语言,把问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为,更注重的是程序的整体设计

在C语言中,程序一般是由数据和算法组成,数据和算法彼此独立,关联性不强;

而在C++中将相互关联数据算法封装起来,形成结构体,无论还是结构体都是一个抽象的概念

只有定义类的变量时,数据才会真实存在,这个变量我们称之为对象

在这里插入图片描述

(class): 完成某一功能的数据和算法的集合,是一个抽象的概念

对象:类的一个实例,具体的概念,是真正存在于内存中的。

举例:房产售楼处的沙盘就是将各种设施集合在一起,代表抽象的概念——

其中的每个设施就是类的一个实例——对象

在这里插入图片描述

二、定义和使用类

定义类的关键字class类名一般以大写的C开头,成员属性一般以m开头

定义一个类的基本格式:

#include <iostream>
#include <string>
using namespace std;
class CTest				//类名以大写的C开头
{
	string m_strName;	//成员属性以m开头
	void SetName()		//成员方法
	{
		m_strName = "TianXi Studio";
	}
	void show()
	{
		cout << m_steName << endl;
	}
	//...
};
int main()
{
	//...
	return 0;
}

定义了Test类后,如何使用这个类?

与结构体的用法相似,在主函数中,使用类定义一个变量,然后使用.操作符进行使用类内成员

int main()
{
	CTest peo;
	peo.m_strName = "天喜";
	peo.show();
	//...
	return 0;
}

但是编译器报错为:

在这里插入图片描述

这是因为类成员访问修饰符的问题,下面介绍类成员访问修饰符:

三、类成员访问修饰符

类成员访问修饰符: 描述了类成员的访问控制,即所能使用的一个范围

  • 共有的public:没有访问限制,其他类可以访问公有成员变量和方法。
  • 保护的protected:只能在当前类和继承该类的子类中访问,受保护成员变量和方法对于其他类不可见。
  • 私有的private (默认):只能在当前类中访问,其他类无法直接访问。

如果不对类成员变量或函数进行访问修饰,默认就是私有的private,只能在当前类中访问,因此在主函数中不可以进行访问,所以会报错为类成员不可访问

只需要对类成员进行修饰:

#include <iostream>
#include <string>
using namespace std;
class CTest				//类名以大写的C开头
{
public:
	string m_strName;	//成员属性以m开头
	void SetName()		//成员方法
	{
		m_strName = "TianXi Studio";
	}
	void show()
	{
		cout << m_strName << endl;
	}
	//...
};
int main()
{
	CTest peo;
	peo.m_strName = "天喜";
	peo.show();
	//...
	return 0;
}

在这里插入图片描述

类成员修饰符会持续到下个修饰符为止,例如:

public:公有的m_steName可以进行访问,而SetName()并没有进行修饰,也可以进行访问,是因为前面的public也修饰了他

protected:受保护的show()就不能进行访问

在这里插入图片描述

在这里插入图片描述

对于类内的私有成员,也可以提供访问接口 (getxxx,setxxx) 来按照一定的规则进行访问

访问修饰符可以控制对类的成员的访问级别,提供了更好的封装性和安全性。

下篇介绍构造函数析构函数(✿◠‿◠)


在这里插入图片描述

大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●)

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

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

相关文章

2023-01-31 LightDB Agent安装.md

LightDB Agent安装 简介 LightDB Enterprise Manager(即 LightDB数据库监控管理平台&#xff0c;下文均简称为LightDB EM)是一个综合性的数据库监控和管理系统&#xff0c; 旨在满足数据库用户的需求&#xff0c;提供强大的图形界面&#xff0c;简化了对LightDB数据库的维护和使…

<C语言> 函数与递归

函数 1.函数的分类 库函数自定义函数 1.1 库函数 C语言提供了许多库函数&#xff08;library functions&#xff09;来简化开发过程并提供常用功能的实现。库函数是预先编写好的函数&#xff0c;可以通过调用这些函数来执行特定的任务。 为什么会有库函数&#xff1f; ​…

Docker中为RabbitMQ安装rabbitmq_delayed_message_exchange插件

Docker中为RabbitMQ安装rabbitmq_delayed_message_exchange插件 1、前言1、下载插件2、拷贝插件到RabbitMQ容器3、启用插件 1、前言 rabbitmq_delayed_message_exchange是一款向RabbitMQ添加延迟消息传递&#xff08;或计划消息传递&#xff09;的插件。 插件下载地址&#x…

Java Web框架对比:选择适合你的项目

导言 选择合适的Java Web框架是开发成功的关键之一。本文将详细对比几个常见的Java Web框架&#xff0c;包括Spring MVC、JavaServer Faces (JSF)、Struts、Play Framework、Apache Wicket和Vaadin&#xff0c;并分析它们的特点、优缺点&#xff0c;以帮助您做出明智的选择。 …

IP笔记全部整合(参考)

高级网络工程师 HCIA回顾1、网络基础2、动态路由协议3、路由认证4、路由控制&#xff08;AD metric &#xff09; 一、知识巩固二、场景模拟1、获取IP地址1.1 DHCP --- 动态主机配置协议1.1.1 DHCP客户端1.1.2 DHCP服务器1.1.3 DHCP客户端1.1.4 DHCP服务器 2、打开浏览器3、路由…

C语言全章总结

数据类型 ​ 用不同数据类型所定义的变量所占空间大小不一样&#xff0c;定义的变量不是保存于数据类型中&#xff0c;而是因为只有定义了该数据类型的变量才能保存数据。 一、整型 1、整型&#xff08;int&#xff09; 四字节&#xff0c;默认有符号&#xff08;-231-231-1…

Spark中python和jvm的通信杂谈--ArrowConverter

背景 要提起ArrowConverters&#xff0c;就得说起Arrow这个项目&#xff0c;该项目的初衷是加速进程间的数据交换&#xff0c;从目前的社区发展以及它的周边来看&#xff0c;其实是一个很不错的项目。 那为什么Spark要引入Arrow呢&#xff1f;其实还得从Pyspark中python和jvm的…

io.netty学习(十)Netty 程序引导类

目录 前言 引导程序类 AbstractBootStrap 抽象类 Bootstrap 类 ServerBootstrap 类 引导服务器 1、实例化引导程序类 2、设置 EventLoopGroup 3、指定 Channel 类型 4、指定 ChannelHandler 5、设置 Channel 选项 6、绑定端口启动服务 引导客户端 1、实例化引导程…

设计模式之代理模式笔记

设计模式之代理模式笔记 说明Proxy(代理)目录代理模式静态代理示例类图买火车票的接口火车站类代售点类测试类 JDK动态代理买火车票的接口火车站类获取代理对象的工厂类测试类 CGLIB动态代理火车站类代理工厂类测试类 三种代理对比优缺点 说明 记录下学习设计模式-代理模式的写…

windows pwn

环境搭建 checksec winchecksec winchecksec 是 windows 版的 checksec &#xff0c;不过有时候结果不太准确。 checksec&#xff08;x64dbg&#xff09; x64dbg 的插件 checksec 检查效果比较准确&#xff0c;并且可以连同加载的 dll 一起检测。 将 release 的插件按 3…

RK3288 Android8.1添加EC25

首先拿到供应商提供的so库&#xff0c;将so放到vendor\rockchip\common\phone\lib下 修改对应的phone.mk&#xff0c;将so库移动指定位置&#xff08;Android7以下移动到system/lib,android8以后移动到vendor/lib&#xff09; CUR_PATH : vendor/rockchip/common#############…

mysql避免重复插入记录insert ignore 、on duplicate key update、replace into

星标▲Java学习之道▲一起成长&#xff0c;一起学习~ 哈喽&#xff0c;大家好&#xff0c;我是阿淼。今天梳理一下mysql中避免重复插入记录的集中操作。 1序 回顾以前写的项目&#xff0c;发现在规范的前提下&#xff0c;还是可以做点骚操作的。 假如项目使用的MySQL&#xff0…

基于Informer的股票价格预测(量化交易综述)

摘要 股票市场是金融市场中不可或缺的组成部分。准确预测股票趋势对于投资者和市场参与者具有重要意义&#xff0c;因为它们可以指导投资决策、优化投资组合以及降低金融风险。而且可以提升国家国际地位以及金融风险控制能力&#xff0c;还可以促进股票市场发展以及资源优化利…

Java常用类库与技巧

1、String&#xff0c;StringBuffer&#xff0c;StringBuilder的区别&#xff1f; 2、Java异常 异常处理机制主要回答了三个问题 What&#xff1a;异常类型回答了什么被抛出&#xff1f;Where&#xff1a;异常堆栈跟踪回答了在哪抛出&#xff1f;Why&#xff1a;异常信息回答…

PowerDesigner165安装

PowerDesigner安装及解析 一、PowerDesigner安装1.双击开始安装2.一路“Next”3.选择地区4.安装路径5.按图勾选6.一路“Next”7.安装中8.安装完成 二、解析三、使用 一、PowerDesigner安装 1.双击开始安装 2.一路“Next” 3.选择地区 选择软件安装所属地区,一定要选择“Hong …

vue3-实战-12-管理后台-权限管理之菜单管理模块-首页-主题颜色-暗黑模式

目录 1-列表页面功能开发 1.1-需求原型分析 1.2-接口和数据类型定义 1.3-获取服务端数据渲染页面 2-新增编辑菜单 2.1-原型需求分析 2.2-表单数据收集和页面结构开发 2.3-提交或者取消 3-删除菜单 4-首页开发 5-暗黑模式的切换和主题颜色 5.1-暗黑模式 5.2-主题颜…

three.js几何体的_UV_、法向属性以及BufferGeometry类介绍

一、几何体的_UV_以及法向属性 UV属性是一组二维坐标&#xff0c;每个顶点都有一个对应的UV坐标。在三维模型上贴上二维的纹理贴图时&#xff0c;需要将所有顶点映射到纹理上的对应位置。UV属性的取值范围一般是[0,1]&#xff0c;表示纹理上的相对位置。通过修改UV属性&#xf…

Shell - 02_shell变量

一、shell的自定义变量 1.定义变量&#xff1a;变量名变量值 如&#xff1a;num10 2.引用变量&#xff1a;$变量名 如&#xff1a;i$num 把变量 num 的值付给变量 i 3.显示变量&#xff1a;使用 echo 命令可以显示单个变量取值 如&#xff1a;echo $num 4.清除变量&…

如何写好接口自动化测试脚本

谈到接口测试&#xff0c;大家关注更多的是哪个工具更优秀&#xff0c;更好用。但是很少人关注到接口测试用例的设计问题&#xff0c;也很少人会去写接口用例&#xff0c;都代码化了嘛&#xff0c;还写什么用例&#xff0c;是吧&#xff1f; 这样真的对么&#xff1f;我们是不…

Web3通过 MetaMask简单演示对ganache虚拟环境账号进行管理操作

上文 Web3通过ganache运行起一个本地虚拟区块链 我们通过ganache在本地运行起了一个虚拟的区块链环境 那么 接下来 我们就要用 MetaMask 来管理这个东西了 如果您还没有安装 可以访问文章Web3 将 MetaMask添加入谷歌浏览器 扩展程序中和Web3开发准备工作 手把手带你创建自己的 …