c++ 学习之 类的权限访问修改学习

先看代码

复制代码
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>

class person {
public:
	// 在这里实现修改
	// 设置名字
	void set_name(string name)
	{
		this->name = name;
	}
	// 读取名字
	string get_name()
	{
		return name;
	}
	// 设置年龄并且打印年龄
	void fun(int age)
	{
		age = age;
		cout << " 年龄是 : " << age << endl;
	}


private:
	// 定义为 私有
	string name;
	int age;

};

int main()
{
	person A;
	A.set_name("mike");
	cout << " the person's name is : " << A.get_name() << endl;
	A.fun(18);
}  

分析

当分析这段代码时,涉及的主要概念包括:

成员函数和成员变量:

在类 person 中,有三个成员函数:set_name、get_name 和 fun,以及两个成员变量:name 和 age。

成员函数用于操作和访问成员变量,可以在类内部定义其实现。

成员变量存储类的状态和数据。
访问权限:

set_name、get_name 和 fun 都是公有成员函数,可以从类的外部调用。

name 和 age 是私有成员变量,只能在类的内部访问。这符合封装的概念,隐藏了内部实现细节。

this 指针:

在成员函数中,this 指针是一个指向当前对象的指针,它可以用来引用当前对象的成员变量和方法。

this->name 表示当前对象的 name 成员变量,用于消除成员变量与参数名的歧义。
方法实现和调用:

set_name 方法接受一个参数 name,并将其赋值给成员变量 name。

get_name 方法不接受参数,直接返回成员变量 name 的值。

fun 方法接受一个参数 age,但代码中使用了局部变量 age 来存储该参数,而未修改成员变量 age 的值。

在 main 函数中,创建了一个 person 对象 A,然后调用了其成员函数来设置名字和输出名字,以及调用 fun 方法来输出年龄。
数据封装和访问控制:

成员变量 name 和 age 被定义为私有,这样外部代码无法直接访问它们。相反,必须通过公有成员函数来操作这些变量,这增加了数据封装性。
局部变量和成员变量:

在 fun 方法中,存在局部变量 age 和类的成员变量 age。局部变量会覆盖同名的成员变量,所以在赋值操作中,实际上修改的是局部变量,不会改变成员变量的值。
输出语句:

cout 是C++标准库中的输出流,用于将文本输出到控制台。

<< 操作符用于将数据插入到输出流中。

endl 用于在输出中插入换行符。
总的来说,这段代码涵盖了面向对象编程的基本概念,如成员函数、成员变量、访问权限、封装、方法实现和调用、this 指针等。它还涉及了基本的C++语法,如变量赋值、输出语句等。需要注意代码中存在的问题,如局部变量与成员变量的混淆以及 fun 方法中对成员变量的操作未能实现预期效果。

相关推荐
wdfk_prog24 分钟前
嵌入式面试真题第 10 题:高优化等级下共享状态可见性、内存模型与系统级同步设计
java·linux·开发语言·面试·职场和发展·架构·c
卓怡学长33 分钟前
w255基于springboot仓库管理系统
java·数据库·spring boot·spring·intellij-idea
私人珍藏库2 小时前
[Android] 会计快题库 -财会职称考试刷题学习
android·人工智能·学习·app·软件·多功能
闻道且行之3 小时前
TurboOCR:基于PP-OCRv6的极速Windows离线OCR工具,深度解析3.4GB依赖背后的技术架构
c++·人工智能·python·qt·机器学习·ocr
这个DBA有点耶3 小时前
SQL调优进阶:从“优化一条SQL”到“优化一个系统”的思维升级
java·大数据·数据库·sql·程序人生·dba·改行学it
csdn2015_4 小时前
springboot读取配置的方法
java·spring boot·spring
AOwhisky4 小时前
下一代容器来了?Docker 宣布原生支持 WebAssembly
java·运维·docker·容器·rust·wasm
c238565 小时前
Bug 猎手入门指南
c++·算法·bug
云云只是个程序马喽6 小时前
海外短剧平台搭建方案:私有化源码系统选型|云微短剧系统技术架构拆解
java·php
C137的本贾尼7 小时前
第七篇:消息队列(MQ)——就是个带存储的异步通信管道
java·开发语言·中间件