- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试编写一些代码来为以下数据的 ID 号、名字、姓氏、期中分数和最终分数创建 getter 和 setter,这些数据位于我正在类的文本文件中写...
10601 ANDRES HYUN 88 91 94 94 89 84 94 84 89 87 89 91
10611 THU ZECHER 83 79 89 87 88 88 86 81 84 80 89 81
10622 BEVERLEE WAMPOLE 95 92 91 96 99 97 99 89 94 96 90 97
10630 TRUMAN SOVIE 68 73 77 76 72 71 72 77 67 68 72 75
ID 是第一个数字,名字和姓氏不言自明,期中成绩是倒数第二个数字,最后一个数字是最终成绩。这是我第一次使用 getter 和 setter,到目前为止我已经......
int getID()const{return ID;}
void setID(int i) {ID=i}
string getFname()const{return Fname;}
void setFname(string f) {Fname = f}
string getLname()const{return Lname;}
void setLname(string l) {Lname = l}
int getMidterm()const{return Midterm;}
void setMidterm(int m) {Midterm=m}
int getFinal()const{return Final;}
void setFinal(int fl) {Final=fl}
我是否在正确的轨道上?另外,如何指定数据集中的第一个数字是ID,第一个字符串是名字,第二个字符串是第二个名字,倒数第二个数字是Midterm,最后一个数字是最终分数?
最佳答案
如果您问的是编写 getter 和 setter,是的,这就是很多人在做的事情。要为复杂类型编写“完美”访问器,您可以使用:
void setLname(const String& input) { Lname = input; } //copies the string
void setLname(String&& input) { Lname = std::move(input); } //moves the string
const String& getLname() const { return Lname; } //allows to get a const String reference from a const object
String& getLname() { return Lname; } //allows modifying access to Lname if the object is not const.
请注意,这不仅仅是两个,人们通常会谈论,通常只看到一个 getter 和一个 setter。只有极少数人愿意写更多。然而,这四个中的每一个都有稍微不同的工作要做,可能建议添加。
但是,很多访问器都是一种代码味道:
他们用不提供任何抽象的函数散乱代码。
只要同时拥有 getter 和 setter,就可以不受限制地访问该数据成员;所以你也可以编写 public: String Lname
。
大量访问器是您建模数据而不是行为的特定标志。在这些情况下,您应该重新考虑您的设计,或者诚实地继续使用公共(public)成员,或者,如果所有成员都是公共(public)的,则使用 struct
恕我直言。
请注意,我在这里谈论的是纯粹的访问器,而不是那些实际上做一些明智的事情的访问器,比如检查值范围、相应地更新其他成员等等。而这些纯粹的是你应该避免的。
所以,如果我是你,我会问自己:我需要我的类(class)有哪些行为?我是否真的需要在其他代码中讨论它的所有数据成员,或者我能否找到我的类可以提供的合理抽象,这将使访问器变得无用?有没有可能我正在考虑为错误的对象类建模?还是我真的只想要一个可以随处使用和修改的数据容器?
关于C++: setter和getter ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18777452/
如果您有一个具有一些普通 get/set 属性的类,是否有任何理由在类方法中使用 getter,或者您应该只使用私有(private)成员变量?我认为关于setter(验证逻辑?)可能会有更多争论,但
我是 Android 编程的新手(~ 2 个月)有必要为几十个不同的变量设置 getter 吗? 例如—— //Yes I realise that this isn't 'dozens' publi
我是VUEX新手,在学习VUEX的同时搭建了一个测试应用。我已将我的 VUEX 存储拆分为多个模块,每个模块都有自己的 getter.js 文件。 Getters、 Action 、突变被导入到每个模
我有一项服务正在加载我想在多个组件之间共享的基本系统信息。 如果我在 getter 中创建一个 getter 方法 this 如果我不在服务中使用双箭头,则 getter 中的 this 成为组件的
tl;博士 如何从参数化的 getter 访问其他 getter? 通常可以使用this.myGetter ;但是参数化的 getter 被实现为箭头函数,其中 this未定义。 在 Pinia 中处
我第一次尝试做一些 OOP,这不是简单的练习,而是用 java 编写一个程序来存储有关人员的信息(如通讯录)。下面是我正在开发的名为 Person 的类的片段。 Person 将在将来的某个时间被其他
我在某处看到类似下面的内容,想知道它是什么意思。我知道他们是getter和setter,但是想知道为什么字符串Type是这样定义的。谢谢你帮助我。 public string Type { get;
Public class Example { private int number; public Example(int number){ this.number =
getter 应该只返回对象吗: public MyObject getMyObject() { return myObject; } 或者它应该复制它返回的对象并返回该副本? public
我目前正在处理大量数据输入,包括很多值,我希望在 getter 中接收这些值以供以后使用。 在编写了一些方法之后,我想知道仅使用一个 get 方法是否是一个更好的主意,并使用一个包含所有可能值的枚举类
我正在使用新的 Class Public Field Declarations可用 Chrome 72我遇到了这种真正奇怪的行为: class Extended { property = 5; }
我有一个这样的表达式 setter/getter : var expression = () => SomeInstance.Nr; 它被传递到一个方法中: public void AddExpres
我的一个类(class)中有以下 getter: get password(){ if(this._public) return null; var text = ""
我已经设法测试了与其他代码隔离的 Vuex getter。当 getter 依赖于其他 getter 时,我现在面临一些问题,请参见以下示例: getters.js export const gett
有时我的任务是查找 getter 返回的值中的某些嵌套 getter 是否具有某些属性。经典的 C++ 会是这样的: for (const auto& label: labels) for (co
我有一个像这样的基类“Parent”: using System; using System.Collections.Generic; using System.Text; namespace Con
我一直在努力了解 getter 和 setter,但没有深入了解。我读过 JavaScript Getters and Setters和 Defining Getters and Setters只是没
考虑一个简单的 Vue 博客: 我使用 Vuex 作为我的数据存储,我需要设置两个 getters :一个 getPost getter,用于通过 ID 检索 post,以及一个 listFeatur
我有一个 VueX 商店,有两个模块,user.js 和merchant.js,顶层是index.js。 user.js 中的 getter 是: 重构 const getters = { s
我正在尝试向 jsp 添加一个复选框以在进入站点之前接受条款和条件。尽管我有一个 getter 方法并且没有看到任何拼写错误,但我一直收到关于没有 getter 方法的相同错误。我不明白我错过了什么。
我是一名优秀的程序员,十分优秀!