在我的代码中,我正在执行以下操作,但是我不确定是否允许这样做,或者这是否是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
{
}
}
有关Empty构造函数的说明如下:
默认构造函数(无参数构造函数):该构造函数将Traveler对象设置为安全的空状态。
我熟悉将变量设置为空状态,但是对于如何将构造函数设置为空状态有些困惑。
布尔和显示功能的说明如下:
bool isEmpty()const:一个查询,报告Traveler对象是否处于安全的空状态。
void display()const:以以下格式显示Traveler对象的内容的查询(另请参见下面的输出列表)。
我不熟悉这段代码中的查询概念。尽管我知道查询用于报告对象的状态,但我不知道如何使用和声明查询。
答案 0 :(得分:0)
正如Pete Becker指出的那样,您可以决定安全空状态对您自己的数据类型的含义。
使用默认构造函数实例化对象时,您的c样式字符串(fName,lName和dest)将仅在其中包含随机/垃圾值。
因此,进一步使用您的对象很可能会导致不需要的结果。
您可以在默认构造函数中将c样式的字符串初始化为空字符串,然后使 isEmpty()函数检查其中的一个(或全部)字符串实际上是空的。 请注意,如果使用 std :: string 类(我建议您从现在开始使用),可以避免这种情况。
最终,您可以从类中删除默认构造函数,这样,在实例化对象时,您必须用值填充字符串。