C++之类(class)的三种成员修饰符(public、private、protected)总结

news2024/11/20 21:21:45

1、背景介绍 

         在C++中,类(class)中成员的三种访问修饰符(access specifiers)用于控制类的成员(属性和方法)的访问权限。这些修饰符决定了类成员在类的外部和内部是否可以被访问。以下是这三种访问修饰符的详细说明:

  1. public(公有):

    • 公有成员在类的内部和外部都可以被访问。
    • 公有成员为类的接口部分,通常包括允许外部访问的方法和属性。
  2. private(私有):

    • 私有成员只能在类的内部被访问,不能在类的外部直接访问。
    • 私有成员通常包括那些实现类的内部逻辑和状态的细节,不应该被外部直接访问。
  3. protected(保护):

    • 保护成员在类的内部可以被访问,在类的外部不能被直接访问。

       外部可以理解为创建的类对象,内部为类的成员函数。

2、类中属性访问权限示例介绍

     下面结合代码介绍public、private、protected修饰符对类中成员变量与成员函数的权限访问限制。

2.1、public修饰

      公有(public)成员:在程序类的外部内部均可访问。如下,定义的类成员函数与变量,均使用public修饰,因此创建的类对象(Box boxObj),可以访问类的函数与变量。同时,类中成员函数(Area())可以访问变量,如下所示。

2.2、private修饰

     私有(private)成员:类的外部是不可访问的,只有类可以访问私有成员。如下图,变量length为私有变量,在外部定义的对象(Box boxObj)已经无法访问变量length。但是类的成员函数(Area()、SetLength())函数可以访问变量length。

      修改后的可运行代码如下:

#include<iostream>
using namespace std;
class Box
{
//类变量修饰
public:
	double width;//宽度
private:
	double length;//长度

//类函数修饰
public:
	double Area();//计算面积
	void SetLength(double length);
};
double Box::Area()
{
	return width*length;
}
void Box::SetLength(double length)
{
	this->length = length;//this可以看成创建一个特殊类对象,这个对象可以访问类的所有成员(变量和函数)
}

int main()
{
	Box boxObj;
	boxObj.SetLength(4);
	boxObj.width = 2;
	cout << "width of box is " << boxObj.width << endl;
	cout << "area of box is " << boxObj.Area() << endl;
	return 0;
}

运行结果如下:

2.3、protected修饰

     在同一类中,受保护的protected对象与private相同,类的外部是不可访问的,只有类成员函数可以访问私有成员。protected修饰的length变量,无法被外部(BoxObj)进行访问,但是可以被类中成员函数(Area setLength)访问。

3、小结

     public、private、protected修饰符可以控制成员变量与成员函数访问权限,从类的成员访问权限上看,private、protected效果一样。但是在后续继承中,是存在差异的。

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

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

相关文章

一份不知道哪里来的第十五届国赛模拟题

这是一个不知道来源的模拟题目&#xff0c;没有完全完成&#xff0c;只作代码记录&#xff0c;不作分析和展示&#xff0c;极其冗长&#xff0c;但里面有长按短按双击的复合&#xff0c;可以看看。 目录 题目代码底层驱动主程序核心代码关键&#xff1a;双击单击长按复合代码 …

[有监督学习]1.详细图解线性回归

线性回归&#xff08;linear regression&#xff09;是用于预测回归问题的算法。该算法不难理解&#xff0c;算法中根据训练数据计算使损失最小的参数的做法是有监督学习算法的共同之处。 概述 线性回归是对“目标变量随着某个特征变量的增大而增大&#xff08;或者减小&#…

如何利用智能算法降低成本,扩大收益?

算法交易&#xff08;Algorithm Trading&#xff09;是一种投资策略&#xff0c;它使用计算机算法来分析市场数据&#xff0c;制定交易决策&#xff0c;并自动执行交易。算法交易的主要目标是利用市场价格波动来获取利润&#xff0c;同时降低人为干预的风险和成本。 量化交易中…

django中,出现CSRF verification failed. Request aborted.错误

这是跨站点访问的防范机制&#xff0c;csrf是一个令牌&#xff0c;会验证登录&#xff0c;需要在setting中把 "django.middleware.csrViewMiddleware" 注释掉 并在html文件中的<body>内添加 {% csrf token %} 就可以了

使用shell命令开启隧道转发的方式

1.适用场景 中转电脑可以通公网&#xff0c;也可以通内网&#xff0c;想把内网映射出去&#xff0c;公网其他电脑就可以通过该隧道远程访问内网的情况 2.命令 开隧道&#xff08;21235是自定义的转发端口&#xff09;&#xff1a; ssh -R 21235:内网地址:ssh端口 用户名公网服…

DuDuTalk:营业厅智能质检终端在通信运营商线下营业厅应用价值

在通信行业日益竞争的今天&#xff0c;线下营业厅网点是企业与客户互动的黄金触点&#xff0c;但由于缺乏有效管控和人员能力素质的层次不齐&#xff0c;如何提升线下营业厅的服务质量、提高运营效率&#xff0c;成为各大通信运营商亟待解决的问题。 在此背景下&#xff0c;我…

本地电脑通过远程服务器进行ssh远程转发

☆ 问题描述 想要实现这样一个事情&#xff1a; 我想要提供一个ai服务&#xff0c;但是租计算服务器太贵了&#xff0c;我自己有配的台式机。那么用我的台式机作为服务器&#xff0c;租一个服务器做端口转发可行吗&#xff1f; ★ 解决方案 1. 修改服务器上的sshd_config文件…

一、初识Qt 之 Hello world

一、初识Qt 之 Hello world 提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 初识Qt 之 Hello world文章目录 一、Qt 简介二、Qt 获取安装三、Qt 初步使用四、Qt 之 Hello world1.新建一个项目 总结 一、Qt 简介 C &#xf…

html+css web前端 多边形

<!DOCTYPE html><html><head><meta charset"UTF-8"><title>多边形</title><style type"text/css">#pentagon_6_1 {position: absolute;top: 0px;height: 0; width: 100; border-left: 100px solid rgb(255, 255…

5.31——进军MYSQL

目录 简略版&#xff1a; 详解版&#xff1a; 一. myaql概述&#xff1a; 数据库&#xff1a; 数据库管理系统&#xff1a; SQL&#xff1a; 二. masql的安装&#xff1a; 启动与停止&#xff1a; 1. MYSQL提供的命令行 2. windows提供的命令行工具 三.数据模型 …

快手发布大模型产品“可图”,超20种创新AI图像玩法限免上线

近日&#xff0c;快手自研大模型产品“可图”&#xff08;Kolors&#xff09;正式对外开放&#xff0c;支持文生图和图生图两类功能&#xff0c;已上线20余种AI图像玩法。目前&#xff0c;用户可以通过“可图大模型”官方网站和微信小程序&#xff0c;免费使用各项AI图像功能。…

光学仪器镀膜上下料设备:智能化生产的引领者

当智能技术与制造业相融合&#xff0c;富唯智能镀膜上下料设备成为智能化生产的新引擎。它不仅将智能化、自动化理念融入到生产的各个环节&#xff0c;更为企业带来了生产效率的提升和成本的降低。 富唯智能镀膜上下料设备以其卓越的性能&#xff0c;在实现单面和两面镀膜的上料…

RocketMQ学习(2) 深入学习

RokcetMQ的介绍和基础知识见这篇博客——RocketMQ学习(1) 快速入门 本篇为上一篇的深入学习&#xff0c;很多基础知识不再赘述。 目录 消息重复消费问题(去重;幂等)布隆过滤器 重试机制死信消息 SpringBoot集成RocketMQ集成SpringBoot发送不同消息模式(同步消息)异步消息单向消…

预编码算法(个人总结)

引言 预编码算法是现代无线通信系统中的关键技术&#xff0c;特别是在多输入多输出&#xff08;MIMO&#xff09;系统中。它们通过在发送端对信号进行处理&#xff0c;减少干扰并提高信道容量。这种技术广泛应用于5G、Wi-Fi和卫星通信系统中。本教程将详细介绍预编码算法的背景…

高精度GNSS模块的无人机导航

高精度GNSS模块提供更高的精度和可靠性&#xff0c;有助于提高无人机的安全性和效率。这些模块允许无人机遵循预定的飞行路线&#xff0c;与障碍物保持安全距离&#xff0c;并以更高的精度悬停。高精度GNSS模块广泛应用于测绘、农业建设、石油天然气、公安等行业。 GNSS模块技…

文件系统小册(FusePosixK8s csi)【1 Fuse】

文件系统小册&#xff08;Fuse&Posix&K8s csi&#xff09;【1 Fuse&#xff1a;用户空间的文件系统】 Fuse(filesystem in userspace),是一个用户空间的文件系统。通过fuse内核模块的支持&#xff0c;开发者只需要根据fuse提供的接口实现具体的文件操作就可以实现一个文…

LNMP部署及应用

目录 1.LNMP概述 Nginx 特点 Nginx 作用 2.分布式部署LNMP操练 Nginx主机&#xff1a;CentOS 7-1 PHP主机: CentOS 7-2 1.LNMP概述 Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器&#xff0c;而且支持热部署&#xff0c;几乎可以做到 7 * 24 小时不间断运行&…

idea中使用maven-helper插件阅读排查【经典版】2

一 maven-helper的使用 1.1 helper页面 打开pom文件&#xff0c;并可以切换tab&#xff0c;简单使用&#xff0c;如下图&#xff1a; Conflicts&#xff08;查看冲突&#xff09; All Dependencies as List&#xff08;列表形式查看所有依赖&#xff09; All Dependencies …

字符串和字符串函数(2)

前言&#xff1a; 在字符串和字符串函数&#xff08;1&#xff09;-CSDN博客中&#xff0c;已将将字符串和字符函数的使用了解&#xff0c;并且实现模拟了一些字符串的库函数。 接下来将继续深入学习字符串和字符串函数。并且模拟实现一些较为复杂的函数。 可控制字符…

香港云服务器好还是国内的好?

香港云服务器与国内云服务器各有其优点和缺点&#xff0c;选择哪种类型的云服务器主要取决于业务需求、用户群体、网络需求以及成本考虑。以下是对两者进行详细比较的内容。 首先&#xff0c;从网络速度和稳定性来看&#xff0c;香港云服务器具有独特的优势。由于香港是全球数据…