安全空状态在中C ++构造函数和布尔:

问题描述 投票:-1回答:1

在我的代码我做以下,但我不知道如果我允许,或者如果它是在C ++中一个很好的做法。我需要创建一个安全的空构造,但我也需要初始化给出的参数变量的构造函数。所以我做了以下内容:

这是Traveler.h文件:

namespace sict
{
// TODO: define the constants here

const int max_destination_size = 32;
const int max_name_size = 16;

// TODO: define the Traveler class here

class Traveler
{
private:
    char fName[max_name_size];
    char lName[max_name_size];
    char dest[max_destination_size];
public:
    // Empty Constructor.
    Traveler();
    // Constructor that accepts 3 parameters.
    Traveler(char* fn, char* ln, char* dt);
    bool isEmpty() const;
    void display() const;
};

这是Traveler.cpp文件:

namespace sict
{
// TODO: implement the default constructor here
Traveler::Traveler()
{

}
// TODO: implement the constructor with 3 parameters here
Traveler::Traveler(char* fn, char* ln, char* dt)
{
    if (&fn != nullptr || &ln != nullptr || dt != nullptr)
    {

    }

}
// TODO: implement isEmpty query here
bool Traveler::isEmpty() const
{

}
// TODO: implement display query here
void Traveler::display() const
{

}

}

对于空构造的说明如下:

默认构造函数(无参数的构造函数):此构造函数将旅行者对象到一个安全的空状态。

我所熟悉的变量设置为空的状态,但一个关于如何构造函数设置为空状态有点困惑。

为布尔和显示功能的指令如下:

布尔的isEmpty()const的:一个报告,如果旅行者对象是在一个安全的空状态的查询。

空隙显示()const的:显示在下面的格式的旅行者对象的内容的查询(也参见下文的输出列表)。

我不熟悉的查询代码的这个部分的概念。虽然我知道查询用于报告对象的状态,我不知道他们是如何使用和声明。

c++
1个回答
0
投票

正如皮特·贝克尔指出,这是你决定的意思安全空状态为自己的数据类型。

当你的对象是使用默认的构造函数实例你的c风格的字符串(FNAME,LNAME和dest)将只包含在他们里面随机/垃圾值。

所以任何进一步的使用您的对象很可能会导致不想要的结果。

你可以初始化你的C风格的字符串作为默认的构造函数空字符串,然后做的isEmpty()函数检查,如果这些字符串中的一个(或全部)实际上是空的。请注意,如果您使用std :: string类(我建议你从现在开始使用)本是可以避免的。

最终,你可以只从类中删除默认的构造函数,因此,任何时候一个对象实例化必须与值串的填写。

© www.soinside.com 2019 - 2024. All rights reserved.