【发布时间】:2021-01-29 01:41:46
【问题描述】:
我在课堂上多次使用以下函数进行抽象:
void Interpreter::pushToStack(int value)
{
stack.push_back(std::to_string(value));
}
现在我有一个特定的功能:
stack.push_back(stack.back());
这是不好的做法吗?在使用抽象函数时不一致是不是很糟糕?因为我认为我不能真正使用pushToStack(int),因为它需要一个整数,我想推送stack.back()。
谢谢!
【问题讨论】:
-
可以这样调用函数
pushToStack(std:stoi(stack.back())) -
是的,我虽然是这样,但那一定是更好的代码吗?或者
stack.pus_back(stack.back());也是“好”代码? -
这是基于意见的,但我会说这种设计很糟糕。应该有一种统一的方式来改变数据成员。同时拥有
pushToStack()成员函数和偶尔裸露的push_backs,非常令人困惑。 -
谢谢。我知道这确实有点基于意见,但我想我同意你的看法。我将使用我的
pushToStack(int)-功能一致! -
你可以把它变成虚拟的,如果需要的话在“Child”类中覆盖它
标签: c++ stack abstraction