基本的C ++编程问题

用户4388084

我正在学习c ++,已经完成了基本的入门书籍。现在,我购买了一本书,叫做《 Professional c ++》,它很棒,但是...

我已经完成了本书中有关如何编写员工数据库的示例代码,但是为了更好地理解,我考虑过编写基于该程序的程序,但用于监狱服务。它生成随机的监狱编号等。这只是头文件,我今天开始处理它,想知道一些事情。

#pragma once
#include <string>

namespace Records
{
class Prisoner
{
public:
    Prisoner();                     //prisoner constructor
    void addTime(int years);
    void reduceTime(int years);
    void prisonNumber();
    void display();
    // getters and setters
    void setFirstName(const std::string& firstName); // 
    const std::string& getFirstName();


    // private data members
private:
    std::string mFirstName;
    std::string mLastName;

    int mPrisonNumber;

};
}

我不明白的是台词

void setFirstName(const std::string& firstName); // 
    const std::string& getFirstName();

我的理解是,它是一个不返回任何值(无效)的函数,它采用名为firstName的字符串指针参数。

我将在互补.cpp文件中定义此功能,如下所示;

void Prisoner::setFirstName(const string& firstName)
    { mFirstName = firstName;}

我在这里做什么的字面意思是什么?

我认为我正在获取字符串的字符串地址并将其分配给数据成员...

如果说实话,我需要研究什么是数据成员以及如何使用它们,我已经完成了有关指针和类的练习,但实际上我无法用语言说出发生了什么。有人可以建议一些阅读材料/资料来源,以便我加深理解。我看过亚马逊,但是被所有可用的书籍淹没了。

用户349594
void Prisoner::setFirstName(const string& firstName)
{ mFirstName = firstName;}

这将意味着:附加到Prisoner类型的对象上的函数(方法)setFirstName()需要对字符串的引用(避免复制),并保证保持不变。然后它将使用成员mFirstName(由Prisoner拥有),并将该值复制到其中。

如果没有const,则可以在适当位置修改该值。从功能上讲,它不会对您的代码造成任何影响,它只是一种保护,可确保您在不打算修改时不进行任何修改。

类型后的&表示它是引用,因此它将读取直接传递给您的对象,而不是复制该对象以供该函数使用。

最后,它通过复制内容将类的成员设置为该值,该成员是附加到该类的合格数据,在您的情况下,这是一个非常普通的数据,然后将其变为Prisoner.mFirstName。

请注意,练习是如何将成员声明为私有的,这意味着只能在类的实现内部进行修改,而不能通过外部任何“使用”该类产生的对象的代码对其进行修改。

因此,并且由于您确实希望能够读取和写入数据,尽管以受控方式进行,但实现了setter和getter方法,这些方法允许通过那些公共函数(方法)来更改类拥有的数据(成员)。 )。

有些人发誓要用setter / getter发誓,有些人则不喜欢它,最终这只是设计选择,是要将数据绑定到对象作为私有对象,还是对所有对它的外部访问进行门控/管理(更改私有数据的公共方法),还是公开直接(将这些成员公开)。

最近,YouTube开设了许多优秀的初学者级C ++课程。书籍推荐通常处于SO规则的边缘,因为我认为它们只是一个意见问题,但是您可以找到一些非常受欢迎的问题,有些被吓到了,这些都是非官方推荐书籍清单。就我个人而言,我一直很喜欢Stroustrup,因为他毕竟是C ++之父:)欠钱,但有时他可能会非常简洁明了,以至于需要不成比例的努力来阅读。对于那些想再次阅读初学者材料的人来说,他的初学者《原理和实践》无疑是一本好书。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章