在类中使用变量(C++帮助)
Using Variables In Classes (C++ help)
我正在youtube上观看C++教程,我正在观看一个名为"在类中使用变量"的视频。在视频中,他解释说,如果我们在课堂上公开变量,那就是糟糕的编程。它会起作用,但它仍然是糟糕的编程。他编写的程序由一个带有私有变量的类组成,他使用两个函数来访问该变量。代码如下:
#include <iostream>
#include <string>
using namespace std;
class MyClass {
public:
void setName(string x)
{
name = x;
}
string getName()
{
return name;
}
private:
string name;
};
int main()
{
MyClass TO;
TO.setName("Taylor");
cout << TO.getName();
}
我的问题是,为什么我们必须创建一个单独的函数来返回name,而不是在第一个函数中返回它?在我的代码中,我在第一个函数中返回了name,它运行得很好。
在某些情况下,您可能需要设置变量,执行一些其他操作,然后打印变量,因此有两个函数。
如果您只想输入变量并打印它,一个函数就足够了。
以set
为前缀的成员函数称为setters,以get
为前缀的会员函数称为getters。
当然,它们也可以有其他名称,但这些都是常见的命名约定。主要的想法是
- getters从类内部"获取"(返回)一个变量,而
- setters将类中的变量"设置"(更改)为某个特定值
有关使用getter和setter的基本原理,请参阅此处的答案。它们涵盖了很多关于getter和setter为什么在面向对象编程中是一件好事的要点。
声明变量是私有的,使用公共函数是设置和获取变量的接口是最佳实践。为什么不从set函数返回值是"关注点分离规则"的含义。请阅读此以获取更多信息http://en.wikipedia.org/wiki/Separation_of_concerns
因为如果不同时设置名称,您将无法编写代码来获取名称。
考虑编写一个函数来打印作为参数传递的MyClass
的名称:
void printName(MyClass my_class){
std::cout << my_class.getName() << "n";
}
如果有setName
函数而没有getName
函数,你会怎么写呢?
在您的琐碎示例中,您不需要getName
,但实际上也不需要MyClass
。你可以写:
std::cout << "Taylorn";
但很明显,这不是本教程的重点。
相关文章:
- 需要帮助设置在C++中使用的Potrace
- 在指针的帮助下,文本文件中单词的频率
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 如何在Qbutton的帮助下更改Q对话框的宽度
- 需要帮助将结构数组传递给函数
- C++需要帮助从用户那里获得一个整数,并确保它在另外两个整数之间
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 有人可以帮助我处理正则表达式吗?
- C++调用具有 *this 属性的单个帮助程序函数
- C++:需要帮助了解运算符重载错误
- 需要以下代码的帮助,下面的代码有什么问题
- CS1 项目帮助C++
- 用于检查值是否为其任何参数的帮助程序函数
- 需要有关此 if 语句的帮助
- 类型限定宏帮助程序
- CoreCLR 中的检测探查器 - 将帮助程序程序集加载到 dotnet 进程的方法
- NS3 插槽混淆(需要帮助理解)
- 设计帮助 - 为不同类型的消息处理通用接口的设计模式
- 需要帮助查找内存泄漏
- 有人可以帮助我理解这些参数/参数吗?