[C++ 核心编程]笔记 4.1.3 成员属性设置为私有

4.1.3 成员属性设置为私有

优点1:将所有成员属性设置为私有,可以自己控制读写权限

优点2:对于写权限,我们可以检测数据的有效性

cpp 复制代码
#include<iostream>
using namespace std;
/*4.1.3 成员属性设置为私有
优点1:将所有成员属性设置为私有,可以自己控制读写权限
优点2:对于写权限,我们可以检测数据的有效性*/

//人类
class Person
{
public:
	//设置姓名
	void setName(string name)
	{
		m_Name = name;

	}
	//获取姓名
	string getName()
	{
		return m_Name;
	}

	//获取年龄
	int getAge()
	{
		return m_Age;
	}
	//设置年龄(0-150)
	void setAge(int age)
	{
		if (age < 0 || age>150)
		{
			cout << "年龄"<<age<< " 输入有误, 赋值失败" << endl;
			return;
		}
		m_Age= age;
	}

	//设置偶像
	void setIdol(string idol)
	{
		m_Idol = idol;
	}
private:
	string m_Name;//可读可写

	int m_Age =18;//只读		也可以写(年龄必须在0-150)

	string m_Idol;//只写
};

int main()
{
	Person p;
	//姓名设置
	p.setName("张三");
	cout << "姓名: " << p.getName() << endl;

	//年龄设置
	p.setAge(160);
	//获取年龄
	cout << "年龄: " << p.getAge() << endl;

	//偶像设置
	p.setIdol("坤哥");
	//cout << "偶像: " << p.getIdol() << endl;//只写, 外界无法访问


	system("pause");
	return 0;
}

运行结果:

可以看到检测到年龄160不符合要求

相关推荐
gihigo19983 小时前
Bezier曲线曲面生成算法
算法
じ☆冷颜〃3 小时前
实分析与测度论、复分析、傅里叶分析、泛函分析、凸分析概述.
笔记·学习·数学建模·拓扑学·傅立叶分析
kobesdu3 小时前
【ROS2实战笔记-19】ROS2 生命周期节点的启动顺序、状态转换陷阱与热备方案
java·前端·笔记·机器人·ros·ros2
平行侠3 小时前
024多精度大整数 - 突破硬件精度限制的任意精度运算
数据结构·算法
谙弆悕博士3 小时前
快速学C语言——第16章:预处理
c语言·开发语言·chrome·笔记·创业创新·预处理·业界资讯
IronMurphy4 小时前
【算法四十五】139. 单词拆分
算法
yuan199974 小时前
基于 C# 实现的 Omron HostLink (FINS) 协议 PLC 通讯
开发语言·c#
王老师青少年编程4 小时前
csp信奥赛C++高频考点专项训练之字符串 --【字符串排序】:合并序列
c++·字符串·csp·高频考点·信奥赛·字符串排序·合并序列
qq_422828624 小时前
android图形学之SurfaceControl和Surface的关系 五
android·开发语言·python
洛水水5 小时前
【力扣100题】32.将有序数组转换为二叉搜索树
数据结构·算法·leetcode