C++:类的使用【浅入了解public、protected、private】

上章讲解怎么声明、定义类的函数以及调用方法,这章讲解具体实现化,浅入了解其构造本质、规则。
一、三种关键字(public、protected、private)应用范围
1、public(公共成员属性),类的成员属性使用权限。
Father.h:

#pragma once
class Father
{
	//公共的行为或者属性(变量)
public:
	void work();					//实现功能,工作领域
	int paly();						//实现功能,交际方式

	int m_Money;					//钱
	int m_Experience;				//阅历

	//受保护的行为或者属性(变量)
protected:
	//私有的行为胡总和属性(变量)
private:
};

小编设置了两个公共成员属性:钱和阅历。
Father.cpp:

#include "Father.h"
#include <iostream>
using namespace std;
//实现功能,工作领域
void Father::work()
{
	m_Money = 3000;
	cout << "父亲一个月挣" << m_Money << "元" << endl;
}
//实现功能,娱乐方式
int Father::play()
{
	m_Experience = 1;
	cout << "父亲每天交际增长" << m_Experience << "%的阅历" << endl;
	return 0;
}
//输出成长值
void Father::Print()
{
	work();
	play();
}

work()、paly()、m_Money 、m_Experience都属于公共成员属性,在公共的成员函数内,则可以调用其类部的成员变量,赋值定义。
主入口函数(类的使用.cpp):

#include <iostream>		//C++标准库,输入、输出
#include "Father.h"		//自定义class 类头文件
using namespace std;	//使用std命名空间[所有的std::]
int main()
{
	Father  father;
	
	father.work();
	father.play();
    cout << "月薪 =" << father.m_Money << endl;
	cout << "阅历 =" << father.m_Experience << endl;
	system("pause");			//暂缓功能,能让界面停留的功能
	return 0;
}```



主入口函数跟类是两个文件,对于类文件而言,它就如字面的意思属于类外。work()、paly()呢,属于Father类的成员属性,在主入口函数(类外)中,只要通过father这个对象就可以调用,这就是“类外调用”。同样的,钱和阅历变量一样可以类外输出。
输出如下:
在这里插入图片描述

这就说明规则之一:类中公共成员属性,在类中和类外都可以调用。
2、protected(受保护的成员属性),类的成员属性使用权限。
Father.h:

#pragma once
class Father
{
	//公共的行为或者属性(变量)
public:
	void Print();					//输出成长值
	//受保护的行为或者属性(变量)
protected:
	void work();					//实现功能,工作领域
	int play();						//实现功能,娱乐方式
	int m_Money;					//钱
	int m_Experience;				//阅历
	//私有的行为胡总和属性(变量)
private:
};

小编将work()、play()、m_Money和m_Experience设为受保护的成员属性,Print()不变。
Father.cpp:

#include "Father.h"
#include <iostream>
using namespace std;
//实现功能,工作领域
void Father::work()
{
	m_Money = 3000;
	cout << "父亲一个月挣" << m_Money << "元" << endl;
}

//实现功能,娱乐方式
int Father::play()
{
	m_Experience = 1;
	cout << "父亲每天交际增长" << m_Experience << "%的阅历" << endl;

	return 0;
}
//输出成长值
void Father::Print()
{
	work();
	play();
}

在定义的cpp文件内,则可以看出,不管类中成员属性到底是属于什么权限,它的定义方式不变。而受保护的成员函数、变量也能在类中调用。测试如下:在这里插入图片描述
但是在主入口函数内,调用受保护的成员函数时就有变化了,代码如下:

int main()
{
	Father  father;

	father.work();
	father.play();
	father.Print();

	system("pause");			//暂缓功能,能让界面停留的功能
	return 0;
}

输出的结果如下图所示:
在这里插入图片描述
这就说明:在类中可以调用受保护的成员属性,但是在类外不可以调用。
3、private(私有的成员属性),类的成员属性使用权限。
Father.h:

#pragma once
class Father
{
	//公共的行为或者属性(变量)
public:
	void Print();					//输出成长值
	//受保护的行为或者属性(变量)
protected:
	//私有的行为胡总和属性(变量)
private:
	void work();					//实现功能,工作领域
	int play();						//实现功能,娱乐方式
	int m_Money;					//钱
	int m_Experience;				//阅历
};

Father.cpp:

#include "Father.h"
#include <iostream>
using namespace std;
//实现功能,工作领域
void Father::work()
{
	m_Money = 3000;
	cout << "父亲一个月挣" << m_Money << "元" << endl;
}

//实现功能,娱乐方式
int Father::play()
{
	m_Experience = 1;
	cout << "父亲每天交际增长" << m_Experience << "%的阅历" << endl;

	return 0;
}
//输出成长值
void Father::Print()
{
	work();
	play();
}

主入口函数(类的使用.cpp):

int main()
{
	Father  father;
	father.Print();
	system("pause");			//暂缓功能,能让界面停留的功能
	return 0;
}

运行结果如下:
在这里插入图片描述
因为Print()函数属于公共属性的,但在公共函数内调用私有成员函数及变量,可以运行成功,这说明:在类中,可以调用私有属性。反之,在类外就不可以调用,代码如下:
在主入口函数(类的使用.cpp)添加调用work()和play()两个私有函数:

int main()
{
	Father  father;

	father.work();
	father.play();

	father.Print();

	system("pause");			//暂缓功能,能让界面停留的功能
	return 0;
}

运行结果如下图所示:
在这里插入图片描述
提示:便于您的理解,请一个一个字的读。
条条代码铸前程,行行字母显乾坤。你的路上不孤单,一路陪行。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值