What does it mean to be a private member (c++ classes)?(作为私有成员(c++类)意味着什么?)
问题描述
我对C++类中的私有数据成员感到有点困惑。我是编程新手,还在学习《课程》一章,所以我可能有些超前了,但我觉得我漏掉了一条信息:
假设我有这样的代码:
class clocktype;
{
public:
void setTime(int,int,int);
.
.
.
private:
int hr;
int min;
int sec;
};
并且我创建了一个myClock对象。
clocktype myclock;
myclock::setTime(hour,minute,min)
{
if (0<= hour && hour < 24)
hr = hour;
if (0<= minute && minute <60)
min = minute;
if ( 0<= second && second<60)
sec = second;
}
myclock.setTime(5,24,54);
我的课本上说我不能这样做:
myclock.hr = 5;
因为hr
是私有数据成员,而对象myclock
只能访问公共成员。但这不是我在setTime
函数中实际上正在做的事情吗?我知道我正在通过我的公共成员函数访问myclock.hr
。但我仍在为背后的逻辑而苦苦挣扎。那么,成为私有数据成员意味着什么?
推荐答案
这里的主要思想是encapsulation。区分私有数据成员和公共setter方法将允许您更改clocktype
类的实现,而不需要使用它的每个人重新编译他们的代码。为了便于讨论,我们假设您决定更改clocktype
实现来存储从一天开始算起的秒数。您所需要做的就是重新实现setTime
方法,而不必触及公共接口:
class clocktype;
{
public:
void setTime(int,int,int);
private:
int secFromMidnight;
};
clocktype myclock;
myclock::setTime(hour, minute, second)
{
secFromMinight = second + (minute * 60) + (hour * 24 * 60);
}
这篇关于作为私有成员(c++类)意味着什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:作为私有成员(c++类)意味着什么?
基础教程推荐
- C++ 程序在执行 std::string 分配时总是崩溃 2022-01-01
- C++ 标准:取消引用 NULL 指针以获取引用? 2021-01-01
- 如何定义双括号/双迭代器运算符,类似于向量的向量? 2022-01-01
- 调用std::Package_TASK::Get_Future()时可能出现争用情况 2022-12-17
- 设计字符串本地化的最佳方法 2022-01-01
- 运算符重载的基本规则和习语是什么? 2022-10-31
- 您如何将 CreateThread 用于属于类成员的函数? 2021-01-01
- C++,'if' 表达式中的变量声明 2021-01-01
- 什么是T&&(双与号)在 C++11 中是什么意思? 2022-11-04
- 如何在 C++ 中处理或避免堆栈溢出 2022-01-01