gpt4 book ai didi

c++ - 使用头文件中的类变量的误解

转载 作者:行者123 更新时间:2023-11-30 05:22:12 27 4
gpt4 key购买 nike

struct TodoItem
{
std::string todo;
};

const int MAX_STACK_SIZE = 5;

class TodoStackArray
{
public:
TodoStackArray(); //confusion here<---
bool isEmpty();
bool isFull();
void push(std::string todoItem);
void pop();
TodoItem* peek();

/* for grading purposes we need these following methods */
int getStackTop() { return stackTop; }
TodoItem** getStack() { return stack; }

private:
int stackTop;
TodoItem* stack[MAX_STACK_SIZE];
};

上面是当前分配的头文件中的一些声明和类。我们的任务是使用这个头文件来实现一个堆栈程序。但是,我对头文件中 TodoStackArray() 的用途有些困惑。这应该是一个基础构造函数吗?我应该用它做什么吗??

我知道这在某种程度上是特定情况,但考虑到堆栈数组是 STL,我想你们都可以提供一些见解。谢谢!

如果您想查看我对这个头文件做了什么......

TodoStackArray::TodoStackArray() //This, unsurprisingly, produces an error.
{
stackTop = -1;
stack[stackTop];
}

bool TodoStackArray::isEmpty()
{
return (stackTop == -1);
}

TodoItem* TodoStackArray::peek()
{
if(stackTop ==-1)
{
cout<< "Stack empty, cannot peak."<<endl;
}
else
{
return(stack[stackTop]);
}
}
bool TodoStackArray::isFull()
{
return(stackTop == 4);
}

void TodoStackArray::push(std::string todoItem)
{
if(stackTop >= 5)
{
cout<<"Stack full, cannot add new todo item."<<endl;
}
else
{
stack[stackTop++];
stack[stackTop]->todo = todoItem;
}
}

void TodoStackArray::pop()
{
if(stackTop == -1)
{
cout<<"Stack empty, cannot pop an item."<<endl;
}
else
{
stackTop--;
}
}

另外,需要说明的是,我们没有提供驱动程序软件。他们将根据自己的东西进行评估,因此我们必须编写自己的驱动程序软件来测试我们的功能。因此缺少任何 Main 实现。

最佳答案

是的,TodoStackArray::TodoStackArray() 确实是您类的默认构造函数。

您应该像使用任何默认构造函数一样使用它做什么:

How are the class members supposed to be initialized if I create a new TodoStackArray?

答案取决于您的类在初始状态下应该是什么样子。

在您的情况下,“默认情况下”堆栈是空的。将 stackTop 设置为 -1 不是一个坏主意,您的其余实现与此一致(stackTop == -1 明确表示“空堆栈”)。

构造函数中发生的奇怪事情是:

stack[stackTop];

在您看来,这条线的目的是什么?您正在读取数组中负索引处的值,我们都知道这种事情永远不会有好下场。

构造函数用于初始化您的数据。在这里,您正在阅读您未在不存在的索引处初始化的内容。没有多大意义,是吗? :)

只要摆脱这条线,你就可以继续前进了。这是使用 member initializer list 的等效实现(被认为更好):

TodoStackArray::TodoStackArray() : stackTop(-1)
{
// notice: no body required here
}

玩得开心!

关于c++ - 使用头文件中的类变量的误解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39763643/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com